diff options
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r-- | include/linux/fs.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 4e41a4a331bb..9ab779e8a63c 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -639,11 +639,13 @@ static inline int inode_unhashed(struct inode *inode) | |||
639 | * 2: child/target | 639 | * 2: child/target |
640 | * 3: xattr | 640 | * 3: xattr |
641 | * 4: second non-directory | 641 | * 4: second non-directory |
642 | * The last is for certain operations (such as rename) which lock two | 642 | * 5: second parent (when locking independent directories in rename) |
643 | * | ||
644 | * I_MUTEX_NONDIR2 is for certain operations (such as rename) which lock two | ||
643 | * non-directories at once. | 645 | * non-directories at once. |
644 | * | 646 | * |
645 | * The locking order between these classes is | 647 | * The locking order between these classes is |
646 | * parent -> child -> normal -> xattr -> second non-directory | 648 | * parent[2] -> child -> grandchild -> normal -> xattr -> second non-directory |
647 | */ | 649 | */ |
648 | enum inode_i_mutex_lock_class | 650 | enum inode_i_mutex_lock_class |
649 | { | 651 | { |
@@ -651,7 +653,8 @@ enum inode_i_mutex_lock_class | |||
651 | I_MUTEX_PARENT, | 653 | I_MUTEX_PARENT, |
652 | I_MUTEX_CHILD, | 654 | I_MUTEX_CHILD, |
653 | I_MUTEX_XATTR, | 655 | I_MUTEX_XATTR, |
654 | I_MUTEX_NONDIR2 | 656 | I_MUTEX_NONDIR2, |
657 | I_MUTEX_PARENT2, | ||
655 | }; | 658 | }; |
656 | 659 | ||
657 | void lock_two_nondirectories(struct inode *, struct inode*); | 660 | void lock_two_nondirectories(struct inode *, struct inode*); |
@@ -2466,6 +2469,7 @@ extern ssize_t new_sync_read(struct file *filp, char __user *buf, size_t len, lo | |||
2466 | extern ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos); | 2469 | extern ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos); |
2467 | 2470 | ||
2468 | /* fs/block_dev.c */ | 2471 | /* fs/block_dev.c */ |
2472 | extern ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to); | ||
2469 | extern ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from); | 2473 | extern ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from); |
2470 | extern int blkdev_fsync(struct file *filp, loff_t start, loff_t end, | 2474 | extern int blkdev_fsync(struct file *filp, loff_t start, loff_t end, |
2471 | int datasync); | 2475 | int datasync); |