diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-26 18:48:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-26 20:22:07 -0400 |
commit | 9ec3a646fe09970f801ab15e0f1694060b9f19af (patch) | |
tree | 697058ca7e1671eda180a3ccc62445686fbc1a31 /fs/fat | |
parent | c8b3fd0ce313443731e8fd6d5a541085eb465f99 (diff) | |
parent | 3cab989afd8d8d1bc3d99fef0e7ed87c31e7b647 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull fourth vfs update from Al Viro:
"d_inode() annotations from David Howells (sat in for-next since before
the beginning of merge window) + four assorted fixes"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
RCU pathwalk breakage when running into a symlink overmounting something
fix I_DIO_WAKEUP definition
direct-io: only inc/dec inode->i_dio_count for file systems
fs/9p: fix readdir()
VFS: assorted d_backing_inode() annotations
VFS: fs/inode.c helpers: d_inode() annotations
VFS: fs/cachefiles: d_backing_inode() annotations
VFS: fs library helpers: d_inode() annotations
VFS: assorted weird filesystems: d_inode() annotations
VFS: normal filesystems (and lustre): d_inode() annotations
VFS: security/: d_inode() annotations
VFS: security/: d_backing_inode() annotations
VFS: net/: d_inode() annotations
VFS: net/unix: d_backing_inode() annotations
VFS: kernel/: d_inode() annotations
VFS: audit: d_backing_inode() annotations
VFS: Fix up some ->d_inode accesses in the chelsio driver
VFS: Cachefiles should perform fs modifications on the top layer only
VFS: AF_UNIX sockets should call mknod on the top layer only
Diffstat (limited to 'fs/fat')
-rw-r--r-- | fs/fat/file.c | 4 | ||||
-rw-r--r-- | fs/fat/namei_msdos.c | 8 | ||||
-rw-r--r-- | fs/fat/namei_vfat.c | 14 | ||||
-rw-r--r-- | fs/fat/nfs.c | 4 |
4 files changed, 15 insertions, 15 deletions
diff --git a/fs/fat/file.c b/fs/fat/file.c index cf50d93565a2..442d50a0e33e 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c | |||
@@ -305,7 +305,7 @@ void fat_truncate_blocks(struct inode *inode, loff_t offset) | |||
305 | 305 | ||
306 | int fat_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) | 306 | int fat_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) |
307 | { | 307 | { |
308 | struct inode *inode = dentry->d_inode; | 308 | struct inode *inode = d_inode(dentry); |
309 | generic_fillattr(inode, stat); | 309 | generic_fillattr(inode, stat); |
310 | stat->blksize = MSDOS_SB(inode->i_sb)->cluster_size; | 310 | stat->blksize = MSDOS_SB(inode->i_sb)->cluster_size; |
311 | 311 | ||
@@ -377,7 +377,7 @@ static int fat_allow_set_time(struct msdos_sb_info *sbi, struct inode *inode) | |||
377 | int fat_setattr(struct dentry *dentry, struct iattr *attr) | 377 | int fat_setattr(struct dentry *dentry, struct iattr *attr) |
378 | { | 378 | { |
379 | struct msdos_sb_info *sbi = MSDOS_SB(dentry->d_sb); | 379 | struct msdos_sb_info *sbi = MSDOS_SB(dentry->d_sb); |
380 | struct inode *inode = dentry->d_inode; | 380 | struct inode *inode = d_inode(dentry); |
381 | unsigned int ia_valid; | 381 | unsigned int ia_valid; |
382 | int error; | 382 | int error; |
383 | 383 | ||
diff --git a/fs/fat/namei_msdos.c b/fs/fat/namei_msdos.c index cc6a8541b668..b7e2b33aa793 100644 --- a/fs/fat/namei_msdos.c +++ b/fs/fat/namei_msdos.c | |||
@@ -308,7 +308,7 @@ out: | |||
308 | static int msdos_rmdir(struct inode *dir, struct dentry *dentry) | 308 | static int msdos_rmdir(struct inode *dir, struct dentry *dentry) |
309 | { | 309 | { |
310 | struct super_block *sb = dir->i_sb; | 310 | struct super_block *sb = dir->i_sb; |
311 | struct inode *inode = dentry->d_inode; | 311 | struct inode *inode = d_inode(dentry); |
312 | struct fat_slot_info sinfo; | 312 | struct fat_slot_info sinfo; |
313 | int err; | 313 | int err; |
314 | 314 | ||
@@ -402,7 +402,7 @@ out: | |||
402 | /***** Unlink a file */ | 402 | /***** Unlink a file */ |
403 | static int msdos_unlink(struct inode *dir, struct dentry *dentry) | 403 | static int msdos_unlink(struct inode *dir, struct dentry *dentry) |
404 | { | 404 | { |
405 | struct inode *inode = dentry->d_inode; | 405 | struct inode *inode = d_inode(dentry); |
406 | struct super_block *sb = inode->i_sb; | 406 | struct super_block *sb = inode->i_sb; |
407 | struct fat_slot_info sinfo; | 407 | struct fat_slot_info sinfo; |
408 | int err; | 408 | int err; |
@@ -440,8 +440,8 @@ static int do_msdos_rename(struct inode *old_dir, unsigned char *old_name, | |||
440 | int err, old_attrs, is_dir, update_dotdot, corrupt = 0; | 440 | int err, old_attrs, is_dir, update_dotdot, corrupt = 0; |
441 | 441 | ||
442 | old_sinfo.bh = sinfo.bh = dotdot_bh = NULL; | 442 | old_sinfo.bh = sinfo.bh = dotdot_bh = NULL; |
443 | old_inode = old_dentry->d_inode; | 443 | old_inode = d_inode(old_dentry); |
444 | new_inode = new_dentry->d_inode; | 444 | new_inode = d_inode(new_dentry); |
445 | 445 | ||
446 | err = fat_scan(old_dir, old_name, &old_sinfo); | 446 | err = fat_scan(old_dir, old_name, &old_sinfo); |
447 | if (err) { | 447 | if (err) { |
diff --git a/fs/fat/namei_vfat.c b/fs/fat/namei_vfat.c index 7e0974eebd8e..7092584f424a 100644 --- a/fs/fat/namei_vfat.c +++ b/fs/fat/namei_vfat.c | |||
@@ -33,7 +33,7 @@ static int vfat_revalidate_shortname(struct dentry *dentry) | |||
33 | { | 33 | { |
34 | int ret = 1; | 34 | int ret = 1; |
35 | spin_lock(&dentry->d_lock); | 35 | spin_lock(&dentry->d_lock); |
36 | if (dentry->d_time != dentry->d_parent->d_inode->i_version) | 36 | if (dentry->d_time != d_inode(dentry->d_parent)->i_version) |
37 | ret = 0; | 37 | ret = 0; |
38 | spin_unlock(&dentry->d_lock); | 38 | spin_unlock(&dentry->d_lock); |
39 | return ret; | 39 | return ret; |
@@ -45,7 +45,7 @@ static int vfat_revalidate(struct dentry *dentry, unsigned int flags) | |||
45 | return -ECHILD; | 45 | return -ECHILD; |
46 | 46 | ||
47 | /* This is not negative dentry. Always valid. */ | 47 | /* This is not negative dentry. Always valid. */ |
48 | if (dentry->d_inode) | 48 | if (d_really_is_positive(dentry)) |
49 | return 1; | 49 | return 1; |
50 | return vfat_revalidate_shortname(dentry); | 50 | return vfat_revalidate_shortname(dentry); |
51 | } | 51 | } |
@@ -65,7 +65,7 @@ static int vfat_revalidate_ci(struct dentry *dentry, unsigned int flags) | |||
65 | * positive dentry isn't good idea. So it's unsupported like | 65 | * positive dentry isn't good idea. So it's unsupported like |
66 | * rename("filename", "FILENAME") for now. | 66 | * rename("filename", "FILENAME") for now. |
67 | */ | 67 | */ |
68 | if (dentry->d_inode) | 68 | if (d_really_is_positive(dentry)) |
69 | return 1; | 69 | return 1; |
70 | 70 | ||
71 | /* | 71 | /* |
@@ -801,7 +801,7 @@ out: | |||
801 | 801 | ||
802 | static int vfat_rmdir(struct inode *dir, struct dentry *dentry) | 802 | static int vfat_rmdir(struct inode *dir, struct dentry *dentry) |
803 | { | 803 | { |
804 | struct inode *inode = dentry->d_inode; | 804 | struct inode *inode = d_inode(dentry); |
805 | struct super_block *sb = dir->i_sb; | 805 | struct super_block *sb = dir->i_sb; |
806 | struct fat_slot_info sinfo; | 806 | struct fat_slot_info sinfo; |
807 | int err; | 807 | int err; |
@@ -832,7 +832,7 @@ out: | |||
832 | 832 | ||
833 | static int vfat_unlink(struct inode *dir, struct dentry *dentry) | 833 | static int vfat_unlink(struct inode *dir, struct dentry *dentry) |
834 | { | 834 | { |
835 | struct inode *inode = dentry->d_inode; | 835 | struct inode *inode = d_inode(dentry); |
836 | struct super_block *sb = dir->i_sb; | 836 | struct super_block *sb = dir->i_sb; |
837 | struct fat_slot_info sinfo; | 837 | struct fat_slot_info sinfo; |
838 | int err; | 838 | int err; |
@@ -915,8 +915,8 @@ static int vfat_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
915 | struct super_block *sb = old_dir->i_sb; | 915 | struct super_block *sb = old_dir->i_sb; |
916 | 916 | ||
917 | old_sinfo.bh = sinfo.bh = dotdot_bh = NULL; | 917 | old_sinfo.bh = sinfo.bh = dotdot_bh = NULL; |
918 | old_inode = old_dentry->d_inode; | 918 | old_inode = d_inode(old_dentry); |
919 | new_inode = new_dentry->d_inode; | 919 | new_inode = d_inode(new_dentry); |
920 | mutex_lock(&MSDOS_SB(sb)->s_lock); | 920 | mutex_lock(&MSDOS_SB(sb)->s_lock); |
921 | err = vfat_find(old_dir, &old_dentry->d_name, &old_sinfo); | 921 | err = vfat_find(old_dir, &old_dentry->d_name, &old_sinfo); |
922 | if (err) | 922 | if (err) |
diff --git a/fs/fat/nfs.c b/fs/fat/nfs.c index 93e14933dcb6..eb192656fba2 100644 --- a/fs/fat/nfs.c +++ b/fs/fat/nfs.c | |||
@@ -266,7 +266,7 @@ struct inode *fat_rebuild_parent(struct super_block *sb, int parent_logstart) | |||
266 | * Find the parent for a directory that is not currently connected to | 266 | * Find the parent for a directory that is not currently connected to |
267 | * the filesystem root. | 267 | * the filesystem root. |
268 | * | 268 | * |
269 | * On entry, the caller holds child_dir->d_inode->i_mutex. | 269 | * On entry, the caller holds d_inode(child_dir)->i_mutex. |
270 | */ | 270 | */ |
271 | static struct dentry *fat_get_parent(struct dentry *child_dir) | 271 | static struct dentry *fat_get_parent(struct dentry *child_dir) |
272 | { | 272 | { |
@@ -276,7 +276,7 @@ static struct dentry *fat_get_parent(struct dentry *child_dir) | |||
276 | struct inode *parent_inode = NULL; | 276 | struct inode *parent_inode = NULL; |
277 | struct msdos_sb_info *sbi = MSDOS_SB(sb); | 277 | struct msdos_sb_info *sbi = MSDOS_SB(sb); |
278 | 278 | ||
279 | if (!fat_get_dotdot_entry(child_dir->d_inode, &bh, &de)) { | 279 | if (!fat_get_dotdot_entry(d_inode(child_dir), &bh, &de)) { |
280 | int parent_logstart = fat_get_start(sbi, de); | 280 | int parent_logstart = fat_get_start(sbi, de); |
281 | parent_inode = fat_dget(sb, parent_logstart); | 281 | parent_inode = fat_dget(sb, parent_logstart); |
282 | if (!parent_inode && sbi->options.nfs == FAT_NFS_NOSTALE_RO) | 282 | if (!parent_inode && sbi->options.nfs == FAT_NFS_NOSTALE_RO) |