kill xfs_rwlock/xfs_rwunlock
PATCH 1/1 kill xfs_rwlock/xfs_rwunlock
We can just use xfs_ilock/xfs_iunlock instead and get rid of the ugly bhv_vrwlock_t.
Signed-off-by Christoph Hellwig <[email protected]>
fs/xfs/dmapi/xfs_dm.c +9 -14
@@ -138,7 +138,7 @@ xfs_dm_send_data_event(xfs_off_t offset, size_t length, int flags, - bhv_vrwlock_t *locktype) + int *lock_flags) { int error;xfs_inode_t *ip;
@@ -150,8 +150,8 @@ xfs_dm_send_data_event( ip =xfs_vtoi (vp); do { dmstate = ip->i_d.di_dmstate; - if (locktype) - xfs_rwunlock(ip, *locktype); + if (lock_flags) + xfs_iunlock(ip, *lock_flags); up_rw_sems(inode, flags);
@@ -161,8 +161,8 @@ xfs_dm_send_data_event(down_rw_sems (inode, flags); -if (locktype) -xfs_rwlock (ip, *locktype); +if (lock_flags) +xfs_ilock (ip, *lock_flags); }while (!error && (ip->i_d.di_dmstate != dmstate));return error;
@@ -3085,7 +3085,6 @@ xfs_dm_send_mmap_event(xfs_inode_t *ip;int error =0 ;dm_eventtype_t max_event =DM_EVENT_READ ; -bhv_vrwlock_t locktype;xfs_fsize_t filesize;xfs_off_t length, end_of_area, evsize, offset;int iolock;
@@ -3140,20 +3139,16 @@ xfs_dm_send_mmap_event(if (evsize <0 ) evsize =0 ; -if (max_event ==DM_EVENT_READ ) { - locktype =VRWLOCK_READ ; +if (max_event ==DM_EVENT_READ ) iolock =XFS_IOLOCK_SHARED ; - } -else { - locktype =VRWLOCK_WRITE ; +else iolock =XFS_IOLOCK_EXCL ; - }xfs_ilock (ip, iolock);/* If write possible, try a DMAPI write event */ if (max_event ==DM_EVENT_WRITE &&DM_EVENT_ENABLED (ip, max_event)) { error =xfs_dm_send_data_event (max_event, vp, offset, - evsize,0 , &locktype); + evsize,0 , &iolock); goto out_unlock; }
@@ -3162,7 +3157,7 @@ xfs_dm_send_mmap_event(*/ if (DM_EVENT_ENABLED (ip,DM_EVENT_READ )) { error =xfs_dm_send_data_event (DM_EVENT_READ , vp, offset, - evsize,0 , &locktype); + evsize,0 , &iolock); } out_unlock:xfs_iunlock (ip, iolock);
fs/xfs/linux-2.6/xfs_aops.c +2 -2
@@ -1532,9 +1532,9 @@ xfs_vm_bmap(struct xfs_inode *ip =XFS_I (inode);xfs_itrace_entry (XFS_I (inode)); -xfs_rwlock (ip,VRWLOCK_READ ); +xfs_ilock (ip,XFS_IOLOCK_SHARED );xfs_flush_pages (ip, (xfs_off_t )0 ,-1 ,0 ,FI_REMAPF ); -xfs_rwunlock (ip,VRWLOCK_READ ); +xfs_iunlock (ip,XFS_IOLOCK_SHARED );return generic_block_bmap (mapping, block, xfs_get_blocks); }
fs/xfs/linux-2.6/xfs_ksyms.c +0 -2
@@ -263,8 +263,6 @@ EXPORT_SYMBOL(xfs_mountfs);EXPORT_SYMBOL (xfs_qm_dqcheck);EXPORT_SYMBOL (xfs_readsb);EXPORT_SYMBOL (xfs_read_buf); -EXPORT_SYMBOL (xfs_rwlock); -EXPORT_SYMBOL (xfs_rwunlock);EXPORT_SYMBOL (xfs_setattr);EXPORT_SYMBOL (xfs_attr_get);EXPORT_SYMBOL (xfs_attr_set);
fs/xfs/linux-2.6/xfs_lrw.c +13 -18
@@ -228,11 +228,11 @@ xfs_read(xfs_ilock (ip,XFS_IOLOCK_SHARED );if (DM_EVENT_ENABLED (ip,DM_EVENT_READ ) && !(ioflags &IO_INVIS )) { -bhv_vrwlock_t locktype =VRWLOCK_READ ;int dmflags =FILP_DELAY_FLAG (file) |DM_SEM_FLAG_RD (ioflags); +int iolock =XFS_IOLOCK_SHARED ; ret = -XFS_SEND_DATA (mp,DM_EVENT_READ , vp, *offset, size, - dmflags, &locktype); + dmflags, &iolock);if (ret) {xfs_iunlock (ip,XFS_IOLOCK_SHARED );if (unlikely (ioflags &IO_ISDIRECT ))
@@ -287,11 +287,11 @@ xfs_splice_read(xfs_ilock (ip,XFS_IOLOCK_SHARED );if (DM_EVENT_ENABLED (ip,DM_EVENT_READ ) && !(ioflags &IO_INVIS )) { -bhv_vrwlock_t locktype =VRWLOCK_READ ; +int iolock =XFS_IOLOCK_SHARED ;int error; error =XFS_SEND_DATA (mp,DM_EVENT_READ , vp, *ppos, count, -FILP_DELAY_FLAG (infilp), &locktype); +FILP_DELAY_FLAG (infilp), &iolock);if (error) {xfs_iunlock (ip,XFS_IOLOCK_SHARED );return -error;
@@ -330,11 +330,11 @@ xfs_splice_write(xfs_ilock (ip,XFS_IOLOCK_EXCL );if (DM_EVENT_ENABLED (ip,DM_EVENT_WRITE ) && !(ioflags &IO_INVIS )) { -bhv_vrwlock_t locktype =VRWLOCK_WRITE ; +int iolock =XFS_IOLOCK_EXCL ;int error; error =XFS_SEND_DATA (mp,DM_EVENT_WRITE , vp, *ppos, count, -FILP_DELAY_FLAG (outfilp), &locktype); +FILP_DELAY_FLAG (outfilp), &iolock);if (error) {xfs_iunlock (ip,XFS_IOLOCK_EXCL );return -error;
@@ -580,7 +580,6 @@ xfs_write(xfs_fsize_t isize, new_size;int iolock;int eventsent =0 ; -bhv_vrwlock_t locktype;size_t ocount =0 , count;loff_t pos;int need_i_mutex;
@@ -607,11 +606,9 @@ xfs_write( relock:if (ioflags &IO_ISDIRECT ) { iolock =XFS_IOLOCK_SHARED ; - locktype =VRWLOCK_WRITE_DIRECT ; need_i_mutex =0 ; }else { iolock =XFS_IOLOCK_EXCL ; - locktype =VRWLOCK_WRITE ; need_i_mutex =1 ;mutex_lock (&inode->i_mutex); }
@@ -635,8 +632,7 @@ start:xfs_iunlock (xip,XFS_ILOCK_EXCL ); error =XFS_SEND_DATA (xip->i_mount,DM_EVENT_WRITE , vp, - pos, count, - dmflags, &locktype); + pos, count, dmflags, &iolock);if (error) { goto out_unlock_internal; }
@@ -667,7 +663,6 @@ start:if (!need_i_mutex && (VN_CACHED (vp) || pos > xip->i_size)) {xfs_iunlock (xip,XFS_ILOCK_EXCL |iolock); iolock =XFS_IOLOCK_EXCL ; - locktype =VRWLOCK_WRITE ; need_i_mutex =1 ;mutex_lock (&inode->i_mutex);xfs_ilock (xip,XFS_ILOCK_EXCL |iolock);
@@ -744,7 +739,6 @@ retry:mutex_unlock (&inode->i_mutex); iolock =XFS_IOLOCK_SHARED ; - locktype =VRWLOCK_WRITE_DIRECT ; need_i_mutex =0 ; }
@@ -781,7 +775,7 @@ retry:if (ret == -ENOSPC &&DM_EVENT_ENABLED (xip,DM_EVENT_NOSPACE ) && !(ioflags &IO_INVIS )) { -xfs_rwunlock (xip, locktype); +xfs_iunlock (xip, iolock);if (need_i_mutex)mutex_unlock (&inode->i_mutex); error = XFS_SEND_NAMESP(xip->i_mount, DM_EVENT_NOSPACE, vp,
@@ -789,7 +783,7 @@ retry: 0, 0, 0); /* Delay flag intentionally unused */if (need_i_mutex)mutex_lock (&inode->i_mutex); -xfs_rwlock (xip, locktype); +xfs_ilock (xip, iolock);if (error) goto out_unlock_internal; pos = xip->i_size;
@@ -817,7 +811,8 @@ retry:/* Handle various SYNC-type writes */ if ((file->f_flags &O_SYNC ) ||IS_SYNC (inode)) {int error2; -xfs_rwunlock (xip, locktype); + +xfs_iunlock (xip, iolock);if (need_i_mutex)mutex_unlock (&inode->i_mutex); error2 =sync_page_range (inode, mapping, pos, ret);
@@ -825,7 +820,7 @@ retry: error = error2;if (need_i_mutex)mutex_lock (&inode->i_mutex); -xfs_rwlock (xip, locktype); +xfs_ilock (xip, iolock); error2 =xfs_write_sync_logforce (mp, xip);if (!error) error = error2;
@@ -846,7 +841,7 @@ retry: xip->i_d.di_size = xip->i_size;xfs_iunlock (xip,XFS_ILOCK_EXCL ); } -xfs_rwunlock (xip, locktype); +xfs_iunlock (xip, iolock); out_unlock_mutex:if (need_i_mutex)mutex_unlock (&inode->i_mutex);
fs/xfs/linux-2.6/xfs_vnode.h +0 -12
@@ -46,18 +46,6 @@ static inline struct inode *vn_to_inode( }/* -* Values for the vop_rwlock/rwunlock flags parameter. -*/ -typedef enum bhv_vrwlock { -VRWLOCK_NONE , -VRWLOCK_READ , -VRWLOCK_WRITE , -VRWLOCK_WRITE_DIRECT , -VRWLOCK_TRY_READ , -VRWLOCK_TRY_WRITE -}bhv_vrwlock_t ; - -/* * Return values for xfs_inactive. A return value of * VN_INACTIVE_NOCACHE implies that the file system behavior * has disassociated its state and bhv_desc_t from the vnode.
fs/xfs/xfs_mount.h +1 -1
@@ -67,7 +67,7 @@ struct xfs_mru_cache;*/ typedef int (*xfs_send_data_t )(int ,bhv_vnode_t *, -xfs_off_t ,size_t ,int ,bhv_vrwlock_t *); +xfs_off_t ,size_t ,int ,int *);typedef int (*xfs_send_mmap_t )(struct vm_area_struct *,uint );typedef int (*xfs_send_destroy_t )(bhv_vnode_t *,dm_right_t ); typedef int (*xfs_send_namesp_t)(dm_eventtype_t, struct xfs_mount *,
fs/xfs/xfs_vnodeops.c +0 -48
54 lines not on this page · raw message
fs/xfs/xfs_vnodeops.h +0 -2
@@ -38,8 +38,6 @@ int xfs_readdir(struct xfs_inode *dp, voint xfs_symlink (struct xfs_inode *dp,bhv_vname_t *dentry,char *target_path,mode_t mode,bhv_vnode_t **vpp,struct cred *credp); -int xfs_rwlock (struct xfs_inode *ip,bhv_vrwlock_t locktype); -void xfs_rwunlock (struct xfs_inode *ip,bhv_vrwlock_t locktype);int xfs_inode_flush (struct xfs_inode *ip,int flags);int xfs_set_dmattrs (struct xfs_inode *ip,u_int evmask,u_int16_t state);int xfs_reclaim (struct xfs_inode *ip);
Quoted 2 lines · Christoph Hellwig
We can just use xfs_ilock/xfs_iunlock instead and get rid of the ugly
bhv_vrwlock_t.
Here's an updated version that applies after the refcache removal and the successive fixup have hit the tree:
fs/xfs/dmapi/xfs_dm.c +9 -14
@@ -138,7 +138,7 @@ xfs_dm_send_data_event(xfs_off_t offset, size_t length, int flags, - bhv_vrwlock_t *locktype) + int *lock_flags) { int error;xfs_inode_t *ip;
@@ -150,8 +150,8 @@ xfs_dm_send_data_event( ip =xfs_vtoi (vp); do { dmstate = ip->i_d.di_dmstate; - if (locktype) - xfs_rwunlock(ip, *locktype); + if (lock_flags) + xfs_iunlock(ip, *lock_flags); up_rw_sems(inode, flags);
@@ -161,8 +161,8 @@ xfs_dm_send_data_event(down_rw_sems (inode, flags); -if (locktype) -xfs_rwlock (ip, *locktype); +if (lock_flags) +xfs_ilock (ip, *lock_flags); }while (!error && (ip->i_d.di_dmstate != dmstate));return error;
@@ -3085,7 +3085,6 @@ xfs_dm_send_mmap_event(xfs_inode_t *ip;int error =0 ;dm_eventtype_t max_event =DM_EVENT_READ ; -bhv_vrwlock_t locktype;xfs_fsize_t filesize;xfs_off_t length, end_of_area, evsize, offset;int iolock;
@@ -3140,20 +3139,16 @@ xfs_dm_send_mmap_event(if (evsize <0 ) evsize =0 ; -if (max_event ==DM_EVENT_READ ) { - locktype =VRWLOCK_READ ; +if (max_event ==DM_EVENT_READ ) iolock =XFS_IOLOCK_SHARED ; - } -else { - locktype =VRWLOCK_WRITE ; +else iolock =XFS_IOLOCK_EXCL ; - }xfs_ilock (ip, iolock);/* If write possible, try a DMAPI write event */ if (max_event ==DM_EVENT_WRITE &&DM_EVENT_ENABLED (ip, max_event)) { error =xfs_dm_send_data_event (max_event, vp, offset, - evsize,0 , &locktype); + evsize,0 , &iolock); goto out_unlock; }
@@ -3162,7 +3157,7 @@ xfs_dm_send_mmap_event(*/ if (DM_EVENT_ENABLED (ip,DM_EVENT_READ )) { error =xfs_dm_send_data_event (DM_EVENT_READ , vp, offset, - evsize,0 , &locktype); + evsize,0 , &iolock); } out_unlock:xfs_iunlock (ip, iolock);
fs/xfs/linux-2.6/xfs_aops.c +2 -2
@@ -1532,9 +1532,9 @@ xfs_vm_bmap(struct xfs_inode *ip =XFS_I (inode);xfs_itrace_entry (XFS_I (inode)); -xfs_rwlock (ip,VRWLOCK_READ ); +xfs_ilock (ip,XFS_IOLOCK_SHARED );xfs_flush_pages (ip, (xfs_off_t )0 ,-1 ,0 ,FI_REMAPF ); -xfs_rwunlock (ip,VRWLOCK_READ ); +xfs_iunlock (ip,XFS_IOLOCK_SHARED );return generic_block_bmap (mapping, block, xfs_get_blocks); }
fs/xfs/linux-2.6/xfs_ksyms.c +0 -2
@@ -262,8 +262,6 @@ EXPORT_SYMBOL(xfs_mountfs);EXPORT_SYMBOL (xfs_qm_dqcheck);EXPORT_SYMBOL (xfs_readsb);EXPORT_SYMBOL (xfs_read_buf); -EXPORT_SYMBOL (xfs_rwlock); -EXPORT_SYMBOL (xfs_rwunlock);EXPORT_SYMBOL (xfs_setattr);EXPORT_SYMBOL (xfs_attr_get);EXPORT_SYMBOL (xfs_attr_set);
fs/xfs/linux-2.6/xfs_lrw.c +13 -18
@@ -228,11 +228,11 @@ xfs_read(xfs_ilock (ip,XFS_IOLOCK_SHARED );if (DM_EVENT_ENABLED (ip,DM_EVENT_READ ) && !(ioflags &IO_INVIS )) { -bhv_vrwlock_t locktype =VRWLOCK_READ ;int dmflags =FILP_DELAY_FLAG (file) |DM_SEM_FLAG_RD (ioflags); +int iolock =XFS_IOLOCK_SHARED ; ret = -XFS_SEND_DATA (mp,DM_EVENT_READ , vp, *offset, size, - dmflags, &locktype); + dmflags, &iolock);if (ret) {xfs_iunlock (ip,XFS_IOLOCK_SHARED );if (unlikely (ioflags &IO_ISDIRECT ))
@@ -287,11 +287,11 @@ xfs_splice_read(xfs_ilock (ip,XFS_IOLOCK_SHARED );if (DM_EVENT_ENABLED (ip,DM_EVENT_READ ) && !(ioflags &IO_INVIS )) { -bhv_vrwlock_t locktype =VRWLOCK_READ ; +int iolock =XFS_IOLOCK_SHARED ;int error; error =XFS_SEND_DATA (mp,DM_EVENT_READ , vp, *ppos, count, -FILP_DELAY_FLAG (infilp), &locktype); +FILP_DELAY_FLAG (infilp), &iolock);if (error) {xfs_iunlock (ip,XFS_IOLOCK_SHARED );return -error;
@@ -330,11 +330,11 @@ xfs_splice_write(xfs_ilock (ip,XFS_IOLOCK_EXCL );if (DM_EVENT_ENABLED (ip,DM_EVENT_WRITE ) && !(ioflags &IO_INVIS )) { -bhv_vrwlock_t locktype =VRWLOCK_WRITE ; +int iolock =XFS_IOLOCK_EXCL ;int error; error =XFS_SEND_DATA (mp,DM_EVENT_WRITE , vp, *ppos, count, -FILP_DELAY_FLAG (outfilp), &locktype); +FILP_DELAY_FLAG (outfilp), &iolock);if (error) {xfs_iunlock (ip,XFS_IOLOCK_EXCL );return -error;
@@ -580,7 +580,6 @@ xfs_write(xfs_fsize_t isize, new_size;int iolock;int eventsent =0 ; -bhv_vrwlock_t locktype;size_t ocount =0 , count;loff_t pos;int need_i_mutex;
@@ -607,11 +606,9 @@ xfs_write( relock:if (ioflags &IO_ISDIRECT ) { iolock =XFS_IOLOCK_SHARED ; - locktype =VRWLOCK_WRITE_DIRECT ; need_i_mutex =0 ; }else { iolock =XFS_IOLOCK_EXCL ; - locktype =VRWLOCK_WRITE ; need_i_mutex =1 ;mutex_lock (&inode->i_mutex); }
@@ -635,8 +632,7 @@ start:xfs_iunlock (xip,XFS_ILOCK_EXCL ); error =XFS_SEND_DATA (xip->i_mount,DM_EVENT_WRITE , vp, - pos, count, - dmflags, &locktype); + pos, count, dmflags, &iolock);if (error) { goto out_unlock_internal; }
@@ -667,7 +663,6 @@ start:if (!need_i_mutex && (VN_CACHED (vp) || pos > xip->i_size)) {xfs_iunlock (xip,XFS_ILOCK_EXCL |iolock); iolock =XFS_IOLOCK_EXCL ; - locktype =VRWLOCK_WRITE ; need_i_mutex =1 ;mutex_lock (&inode->i_mutex);xfs_ilock (xip,XFS_ILOCK_EXCL |iolock);
@@ -744,7 +739,6 @@ retry:mutex_unlock (&inode->i_mutex); iolock =XFS_IOLOCK_SHARED ; - locktype =VRWLOCK_WRITE_DIRECT ; need_i_mutex =0 ; }
@@ -781,7 +775,7 @@ retry:if (ret == -ENOSPC &&DM_EVENT_ENABLED (xip,DM_EVENT_NOSPACE ) && !(ioflags &IO_INVIS )) { -xfs_rwunlock (xip, locktype); +xfs_iunlock (xip, iolock);if (need_i_mutex)mutex_unlock (&inode->i_mutex); error = XFS_SEND_NAMESP(xip->i_mount, DM_EVENT_NOSPACE, vp,
@@ -789,7 +783,7 @@ retry: 0, 0, 0); /* Delay flag intentionally unused */if (need_i_mutex)mutex_lock (&inode->i_mutex); -xfs_rwlock (xip, locktype); +xfs_ilock (xip, iolock);if (error) goto out_unlock_internal; pos = xip->i_size;
@@ -817,7 +811,8 @@ retry:/* Handle various SYNC-type writes */ if ((file->f_flags &O_SYNC ) ||IS_SYNC (inode)) {int error2; -xfs_rwunlock (xip, locktype); + +xfs_iunlock (xip, iolock);if (need_i_mutex)mutex_unlock (&inode->i_mutex); error2 =sync_page_range (inode, mapping, pos, ret);
@@ -825,7 +820,7 @@ retry: error = error2;if (need_i_mutex)mutex_lock (&inode->i_mutex); -xfs_rwlock (xip, locktype); +xfs_ilock (xip, iolock); error2 =xfs_write_sync_logforce (mp, xip);if (!error) error = error2;
@@ -846,7 +841,7 @@ retry: xip->i_d.di_size = xip->i_size;xfs_iunlock (xip,XFS_ILOCK_EXCL ); } -xfs_rwunlock (xip, locktype); +xfs_iunlock (xip, iolock); out_unlock_mutex:if (need_i_mutex)mutex_unlock (&inode->i_mutex);
fs/xfs/linux-2.6/xfs_vnode.h +0 -12
@@ -46,18 +46,6 @@ static inline struct inode *vn_to_inode( }/* -* Values for the vop_rwlock/rwunlock flags parameter. -*/ -typedef enum bhv_vrwlock { -VRWLOCK_NONE , -VRWLOCK_READ , -VRWLOCK_WRITE , -VRWLOCK_WRITE_DIRECT , -VRWLOCK_TRY_READ , -VRWLOCK_TRY_WRITE -}bhv_vrwlock_t ; - -/* * Return values for xfs_inactive. A return value of * VN_INACTIVE_NOCACHE implies that the file system behavior * has disassociated its state and bhv_desc_t from the vnode.
fs/xfs/xfs_mount.h +1 -1
@@ -67,7 +67,7 @@ struct xfs_mru_cache;*/ typedef int (*xfs_send_data_t )(int ,bhv_vnode_t *, -xfs_off_t ,size_t ,int ,bhv_vrwlock_t *); +xfs_off_t ,size_t ,int ,int *);typedef int (*xfs_send_mmap_t )(struct vm_area_struct *,uint );typedef int (*xfs_send_destroy_t )(bhv_vnode_t *,dm_right_t ); typedef int (*xfs_send_namesp_t)(dm_eventtype_t, struct xfs_mount *,
fs/xfs/xfs_vnodeops.c +0 -41
47 lines not on this page · raw message
fs/xfs/xfs_vnodeops.h +0 -2
@@ -38,8 +38,6 @@ int xfs_readdir(struct xfs_inode *dp, voint xfs_symlink (struct xfs_inode *dp,bhv_vname_t *dentry,char *target_path,mode_t mode,bhv_vnode_t **vpp,struct cred *credp); -int xfs_rwlock (struct xfs_inode *ip,bhv_vrwlock_t locktype); -void xfs_rwunlock (struct xfs_inode *ip,bhv_vrwlock_t locktype);int xfs_inode_flush (struct xfs_inode *ip,int flags);int xfs_set_dmattrs (struct xfs_inode *ip,u_int evmask,u_int16_t state);int xfs_reclaim (struct xfs_inode *ip);