diff options
author | Amir Goldstein <amir73il@gmail.com> | 2018-10-18 11:37:14 -0400 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2018-10-26 17:34:40 -0400 |
commit | 1e92e3072c1456abedf51c9dedd245d2ba0daa4f (patch) | |
tree | 4d6e3e2299a97e4015a8b84646ee25c3b2db0c9c /fs/overlayfs/util.c | |
parent | 0e32992f7faccd50d1b00032de83e87a35fed247 (diff) |
ovl: abstract ovl_inode lock with a helper
The abstraction improves code readabilty (to some).
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/overlayfs/util.c')
-rw-r--r-- | fs/overlayfs/util.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c index d3a786006729..7c01327b1852 100644 --- a/fs/overlayfs/util.c +++ b/fs/overlayfs/util.c | |||
@@ -521,13 +521,13 @@ bool ovl_already_copied_up(struct dentry *dentry, int flags) | |||
521 | 521 | ||
522 | int ovl_copy_up_start(struct dentry *dentry, int flags) | 522 | int ovl_copy_up_start(struct dentry *dentry, int flags) |
523 | { | 523 | { |
524 | struct ovl_inode *oi = OVL_I(d_inode(dentry)); | 524 | struct inode *inode = d_inode(dentry); |
525 | int err; | 525 | int err; |
526 | 526 | ||
527 | err = mutex_lock_interruptible(&oi->lock); | 527 | err = ovl_inode_lock(inode); |
528 | if (!err && ovl_already_copied_up_locked(dentry, flags)) { | 528 | if (!err && ovl_already_copied_up_locked(dentry, flags)) { |
529 | err = 1; /* Already copied up */ | 529 | err = 1; /* Already copied up */ |
530 | mutex_unlock(&oi->lock); | 530 | ovl_inode_unlock(inode); |
531 | } | 531 | } |
532 | 532 | ||
533 | return err; | 533 | return err; |
@@ -535,7 +535,7 @@ int ovl_copy_up_start(struct dentry *dentry, int flags) | |||
535 | 535 | ||
536 | void ovl_copy_up_end(struct dentry *dentry) | 536 | void ovl_copy_up_end(struct dentry *dentry) |
537 | { | 537 | { |
538 | mutex_unlock(&OVL_I(d_inode(dentry))->lock); | 538 | ovl_inode_unlock(d_inode(dentry)); |
539 | } | 539 | } |
540 | 540 | ||
541 | bool ovl_check_origin_xattr(struct dentry *dentry) | 541 | bool ovl_check_origin_xattr(struct dentry *dentry) |
@@ -740,11 +740,11 @@ fail: | |||
740 | */ | 740 | */ |
741 | int ovl_nlink_start(struct dentry *dentry) | 741 | int ovl_nlink_start(struct dentry *dentry) |
742 | { | 742 | { |
743 | struct ovl_inode *oi = OVL_I(d_inode(dentry)); | 743 | struct inode *inode = d_inode(dentry); |
744 | const struct cred *old_cred; | 744 | const struct cred *old_cred; |
745 | int err; | 745 | int err; |
746 | 746 | ||
747 | if (WARN_ON(!d_inode(dentry))) | 747 | if (WARN_ON(!inode)) |
748 | return -ENOENT; | 748 | return -ENOENT; |
749 | 749 | ||
750 | /* | 750 | /* |
@@ -767,11 +767,11 @@ int ovl_nlink_start(struct dentry *dentry) | |||
767 | return err; | 767 | return err; |
768 | } | 768 | } |
769 | 769 | ||
770 | err = mutex_lock_interruptible(&oi->lock); | 770 | err = ovl_inode_lock(inode); |
771 | if (err) | 771 | if (err) |
772 | return err; | 772 | return err; |
773 | 773 | ||
774 | if (d_is_dir(dentry) || !ovl_test_flag(OVL_INDEX, d_inode(dentry))) | 774 | if (d_is_dir(dentry) || !ovl_test_flag(OVL_INDEX, inode)) |
775 | goto out; | 775 | goto out; |
776 | 776 | ||
777 | old_cred = ovl_override_creds(dentry->d_sb); | 777 | old_cred = ovl_override_creds(dentry->d_sb); |
@@ -786,15 +786,16 @@ int ovl_nlink_start(struct dentry *dentry) | |||
786 | 786 | ||
787 | out: | 787 | out: |
788 | if (err) | 788 | if (err) |
789 | mutex_unlock(&oi->lock); | 789 | ovl_inode_unlock(inode); |
790 | 790 | ||
791 | return err; | 791 | return err; |
792 | } | 792 | } |
793 | 793 | ||
794 | void ovl_nlink_end(struct dentry *dentry) | 794 | void ovl_nlink_end(struct dentry *dentry) |
795 | { | 795 | { |
796 | if (ovl_test_flag(OVL_INDEX, d_inode(dentry)) && | 796 | struct inode *inode = d_inode(dentry); |
797 | d_inode(dentry)->i_nlink == 0) { | 797 | |
798 | if (ovl_test_flag(OVL_INDEX, inode) && inode->i_nlink == 0) { | ||
798 | const struct cred *old_cred; | 799 | const struct cred *old_cred; |
799 | 800 | ||
800 | old_cred = ovl_override_creds(dentry->d_sb); | 801 | old_cred = ovl_override_creds(dentry->d_sb); |
@@ -802,7 +803,7 @@ void ovl_nlink_end(struct dentry *dentry) | |||
802 | revert_creds(old_cred); | 803 | revert_creds(old_cred); |
803 | } | 804 | } |
804 | 805 | ||
805 | mutex_unlock(&OVL_I(d_inode(dentry))->lock); | 806 | ovl_inode_unlock(inode); |
806 | } | 807 | } |
807 | 808 | ||
808 | int ovl_lock_rename_workdir(struct dentry *workdir, struct dentry *upperdir) | 809 | int ovl_lock_rename_workdir(struct dentry *workdir, struct dentry *upperdir) |