--- linux/fs/minix/namei.c 2018/04/24 18:10:47 1.1.1.5 +++ linux/fs/minix/namei.c 2018/04/24 18:12:32 1.1.1.6 @@ -1,7 +1,7 @@ /* * linux/fs/minix/namei.c * - * (C) 1991 Linus Torvalds + * Copyright (C) 1991, 1992 Linus Torvalds */ #include @@ -10,9 +10,10 @@ #include #include #include +#include + #include -#include #include /* @@ -77,7 +78,7 @@ static struct buffer_head * minix_find_e entries = dir->i_size / (sizeof (struct minix_dir_entry)); if (!(block = dir->i_data[0])) return NULL; - if (!(bh = bread(dir->i_dev,block))) + if (!(bh = bread(dir->i_dev, block, BLOCK_SIZE))) return NULL; i = 0; de = (struct minix_dir_entry *) bh->b_data; @@ -86,7 +87,7 @@ static struct buffer_head * minix_find_e brelse(bh); bh = NULL; if (!(block = minix_bmap(dir,i/MINIX_DIR_ENTRIES_PER_BLOCK)) || - !(bh = bread(dir->i_dev,block))) { + !(bh = bread(dir->i_dev, block, BLOCK_SIZE))) { i += MINIX_DIR_ENTRIES_PER_BLOCK; continue; } @@ -162,7 +163,7 @@ static struct buffer_head * minix_add_en return NULL; if (!(block = dir->i_data[0])) return NULL; - if (!(bh = bread(dir->i_dev,block))) + if (!(bh = bread(dir->i_dev, block, BLOCK_SIZE))) return NULL; i = 0; de = (struct minix_dir_entry *) bh->b_data; @@ -173,7 +174,7 @@ static struct buffer_head * minix_add_en block = minix_create_block(dir,i/MINIX_DIR_ENTRIES_PER_BLOCK); if (!block) return NULL; - if (!(bh = bread(dir->i_dev,block))) { + if (!(bh = bread(dir->i_dev, block, BLOCK_SIZE))) { i += MINIX_DIR_ENTRIES_PER_BLOCK; continue; } @@ -321,7 +322,7 @@ int minix_mkdir(struct inode * dir, cons return -ENOSPC; } inode->i_dirt = 1; - if (!(dir_block = bread(inode->i_dev,inode->i_data[0]))) { + if (!(dir_block = bread(inode->i_dev, inode->i_data[0], BLOCK_SIZE))) { iput(dir); inode->i_nlink--; inode->i_dirt = 1; @@ -368,7 +369,7 @@ static int empty_dir(struct inode * inod len = inode->i_size / sizeof (struct minix_dir_entry); if (len<2 || !inode->i_data[0] || - !(bh=bread(inode->i_dev,inode->i_data[0]))) { + !(bh=bread(inode->i_dev, inode->i_data[0], BLOCK_SIZE))) { printk("warning - bad directory on dev %04x\n",inode->i_dev); return 0; } @@ -388,7 +389,7 @@ static int empty_dir(struct inode * inod nr += MINIX_DIR_ENTRIES_PER_BLOCK; continue; } - if (!(bh=bread(inode->i_dev,block))) + if (!(bh=bread(inode->i_dev, block, BLOCK_SIZE))) return 0; de = (struct minix_dir_entry *) bh->b_data; } @@ -515,7 +516,7 @@ int minix_symlink(struct inode * dir, co return -ENOSPC; } inode->i_dirt = 1; - if (!(name_block = bread(inode->i_dev,inode->i_data[0]))) { + if (!(name_block = bread(inode->i_dev, inode->i_data[0], BLOCK_SIZE))) { iput(dir); inode->i_nlink--; inode->i_dirt = 1; @@ -676,6 +677,10 @@ start_up: retval = 0; goto end_rename; } + if (S_ISDIR(new_inode->i_mode)) { + retval = -EEXIST; + goto end_rename; + } if (S_ISDIR(old_inode->i_mode)) { retval = -EEXIST; if (new_bh) @@ -689,7 +694,7 @@ start_up: retval = -EIO; if (!old_inode->i_data[0]) goto end_rename; - if (!(dir_bh = bread(old_inode->i_dev, old_inode->i_data[0]))) + if (!(dir_bh = bread(old_inode->i_dev, old_inode->i_data[0], BLOCK_SIZE))) goto end_rename; if (PARENT_INO(dir_bh->b_data) != old_dir->i_ino) goto end_rename; @@ -747,7 +752,7 @@ end_rename: int minix_rename(struct inode * old_dir, const char * old_name, int old_len, struct inode * new_dir, const char * new_name, int new_len) { - static struct task_struct * wait = NULL; + static struct wait_queue * wait = NULL; static int lock = 0; int result;