99 *
1010 */
1111#include <linux/fs.h>
12- #define _NEED_FILE_LOCK_FIELD_MACROS
1312#include <linux/filelock.h>
1413#include <linux/backing-dev.h>
1514#include <linux/stat.h>
@@ -1313,20 +1312,20 @@ cifs_lock_test(struct cifsFileInfo *cfile, __u64 offset, __u64 length,
13131312 down_read (& cinode -> lock_sem );
13141313
13151314 exist = cifs_find_lock_conflict (cfile , offset , length , type ,
1316- flock -> fl_flags , & conf_lock ,
1315+ flock -> c . flc_flags , & conf_lock ,
13171316 CIFS_LOCK_OP );
13181317 if (exist ) {
13191318 flock -> fl_start = conf_lock -> offset ;
13201319 flock -> fl_end = conf_lock -> offset + conf_lock -> length - 1 ;
1321- flock -> fl_pid = conf_lock -> pid ;
1320+ flock -> c . flc_pid = conf_lock -> pid ;
13221321 if (conf_lock -> type & server -> vals -> shared_lock_type )
1323- flock -> fl_type = F_RDLCK ;
1322+ flock -> c . flc_type = F_RDLCK ;
13241323 else
1325- flock -> fl_type = F_WRLCK ;
1324+ flock -> c . flc_type = F_WRLCK ;
13261325 } else if (!cinode -> can_cache_brlcks )
13271326 rc = 1 ;
13281327 else
1329- flock -> fl_type = F_UNLCK ;
1328+ flock -> c . flc_type = F_UNLCK ;
13301329
13311330 up_read (& cinode -> lock_sem );
13321331 return rc ;
@@ -1402,16 +1401,16 @@ cifs_posix_lock_test(struct file *file, struct file_lock *flock)
14021401{
14031402 int rc = 0 ;
14041403 struct cifsInodeInfo * cinode = CIFS_I (file_inode (file ));
1405- unsigned char saved_type = flock -> fl_type ;
1404+ unsigned char saved_type = flock -> c . flc_type ;
14061405
1407- if ((flock -> fl_flags & FL_POSIX ) == 0 )
1406+ if ((flock -> c . flc_flags & FL_POSIX ) == 0 )
14081407 return 1 ;
14091408
14101409 down_read (& cinode -> lock_sem );
14111410 posix_test_lock (file , flock );
14121411
14131412 if (lock_is_unlock (flock ) && !cinode -> can_cache_brlcks ) {
1414- flock -> fl_type = saved_type ;
1413+ flock -> c . flc_type = saved_type ;
14151414 rc = 1 ;
14161415 }
14171416
@@ -1432,7 +1431,7 @@ cifs_posix_lock_set(struct file *file, struct file_lock *flock)
14321431 struct cifsInodeInfo * cinode = CIFS_I (file_inode (file ));
14331432 int rc = FILE_LOCK_DEFERRED + 1 ;
14341433
1435- if ((flock -> fl_flags & FL_POSIX ) == 0 )
1434+ if ((flock -> c . flc_flags & FL_POSIX ) == 0 )
14361435 return rc ;
14371436
14381437 cifs_down_write (& cinode -> lock_sem );
@@ -1583,6 +1582,8 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
15831582 el = locks_to_send .next ;
15841583 spin_lock (& flctx -> flc_lock );
15851584 for_each_file_lock (flock , & flctx -> flc_posix ) {
1585+ unsigned char ftype = flock -> c .flc_type ;
1586+
15861587 if (el == & locks_to_send ) {
15871588 /*
15881589 * The list ended. We don't have enough allocated
@@ -1592,12 +1593,12 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
15921593 break ;
15931594 }
15941595 length = cifs_flock_len (flock );
1595- if (lock_is_read ( flock ) || flock -> fl_type == F_SHLCK )
1596+ if (ftype == F_RDLCK || ftype == F_SHLCK )
15961597 type = CIFS_RDLCK ;
15971598 else
15981599 type = CIFS_WRLCK ;
15991600 lck = list_entry (el , struct lock_to_push , llist );
1600- lck -> pid = hash_lockowner (flock -> fl_owner );
1601+ lck -> pid = hash_lockowner (flock -> c . flc_owner );
16011602 lck -> netfid = cfile -> fid .netfid ;
16021603 lck -> length = length ;
16031604 lck -> type = type ;
@@ -1664,22 +1665,23 @@ static void
16641665cifs_read_flock (struct file_lock * flock , __u32 * type , int * lock , int * unlock ,
16651666 bool * wait_flag , struct TCP_Server_Info * server )
16661667{
1667- if (flock -> fl_flags & FL_POSIX )
1668+ if (flock -> c . flc_flags & FL_POSIX )
16681669 cifs_dbg (FYI , "Posix\n" );
1669- if (flock -> fl_flags & FL_FLOCK )
1670+ if (flock -> c . flc_flags & FL_FLOCK )
16701671 cifs_dbg (FYI , "Flock\n" );
1671- if (flock -> fl_flags & FL_SLEEP ) {
1672+ if (flock -> c . flc_flags & FL_SLEEP ) {
16721673 cifs_dbg (FYI , "Blocking lock\n" );
16731674 * wait_flag = true;
16741675 }
1675- if (flock -> fl_flags & FL_ACCESS )
1676+ if (flock -> c . flc_flags & FL_ACCESS )
16761677 cifs_dbg (FYI , "Process suspended by mandatory locking - not implemented yet\n" );
1677- if (flock -> fl_flags & FL_LEASE )
1678+ if (flock -> c . flc_flags & FL_LEASE )
16781679 cifs_dbg (FYI , "Lease on file - not implemented yet\n" );
1679- if (flock -> fl_flags &
1680+ if (flock -> c . flc_flags &
16801681 (~(FL_POSIX | FL_FLOCK | FL_SLEEP |
16811682 FL_ACCESS | FL_LEASE | FL_CLOSE | FL_OFDLCK )))
1682- cifs_dbg (FYI , "Unknown lock flags 0x%x\n" , flock -> fl_flags );
1683+ cifs_dbg (FYI , "Unknown lock flags 0x%x\n" ,
1684+ flock -> c .flc_flags );
16831685
16841686 * type = server -> vals -> large_lock_type ;
16851687 if (lock_is_write (flock )) {
@@ -1695,11 +1697,11 @@ cifs_read_flock(struct file_lock *flock, __u32 *type, int *lock, int *unlock,
16951697 cifs_dbg (FYI , "F_RDLCK\n" );
16961698 * type |= server -> vals -> shared_lock_type ;
16971699 * lock = 1 ;
1698- } else if (flock -> fl_type == F_EXLCK ) {
1700+ } else if (flock -> c . flc_type == F_EXLCK ) {
16991701 cifs_dbg (FYI , "F_EXLCK\n" );
17001702 * type |= server -> vals -> exclusive_lock_type ;
17011703 * lock = 1 ;
1702- } else if (flock -> fl_type == F_SHLCK ) {
1704+ } else if (flock -> c . flc_type == F_SHLCK ) {
17031705 cifs_dbg (FYI , "F_SHLCK\n" );
17041706 * type |= server -> vals -> shared_lock_type ;
17051707 * lock = 1 ;
@@ -1731,7 +1733,7 @@ cifs_getlk(struct file *file, struct file_lock *flock, __u32 type,
17311733 else
17321734 posix_lock_type = CIFS_WRLCK ;
17331735 rc = CIFSSMBPosixLock (xid , tcon , netfid ,
1734- hash_lockowner (flock -> fl_owner ),
1736+ hash_lockowner (flock -> c . flc_owner ),
17351737 flock -> fl_start , length , flock ,
17361738 posix_lock_type , wait_flag );
17371739 return rc ;
@@ -1748,15 +1750,15 @@ cifs_getlk(struct file *file, struct file_lock *flock, __u32 type,
17481750 if (rc == 0 ) {
17491751 rc = server -> ops -> mand_lock (xid , cfile , flock -> fl_start , length ,
17501752 type , 0 , 1 , false);
1751- flock -> fl_type = F_UNLCK ;
1753+ flock -> c . flc_type = F_UNLCK ;
17521754 if (rc != 0 )
17531755 cifs_dbg (VFS , "Error unlocking previously locked range %d during test of lock\n" ,
17541756 rc );
17551757 return 0 ;
17561758 }
17571759
17581760 if (type & server -> vals -> shared_lock_type ) {
1759- flock -> fl_type = F_WRLCK ;
1761+ flock -> c . flc_type = F_WRLCK ;
17601762 return 0 ;
17611763 }
17621764
@@ -1768,12 +1770,12 @@ cifs_getlk(struct file *file, struct file_lock *flock, __u32 type,
17681770 if (rc == 0 ) {
17691771 rc = server -> ops -> mand_lock (xid , cfile , flock -> fl_start , length ,
17701772 type | server -> vals -> shared_lock_type , 0 , 1 , false);
1771- flock -> fl_type = F_RDLCK ;
1773+ flock -> c . flc_type = F_RDLCK ;
17721774 if (rc != 0 )
17731775 cifs_dbg (VFS , "Error unlocking previously locked range %d during test of lock\n" ,
17741776 rc );
17751777 } else
1776- flock -> fl_type = F_WRLCK ;
1778+ flock -> c . flc_type = F_WRLCK ;
17771779
17781780 return 0 ;
17791781}
@@ -1941,7 +1943,7 @@ cifs_setlk(struct file *file, struct file_lock *flock, __u32 type,
19411943 posix_lock_type = CIFS_UNLCK ;
19421944
19431945 rc = CIFSSMBPosixLock (xid , tcon , cfile -> fid .netfid ,
1944- hash_lockowner (flock -> fl_owner ),
1946+ hash_lockowner (flock -> c . flc_owner ),
19451947 flock -> fl_start , length ,
19461948 NULL , posix_lock_type , wait_flag );
19471949 goto out ;
@@ -1951,7 +1953,7 @@ cifs_setlk(struct file *file, struct file_lock *flock, __u32 type,
19511953 struct cifsLockInfo * lock ;
19521954
19531955 lock = cifs_lock_init (flock -> fl_start , length , type ,
1954- flock -> fl_flags );
1956+ flock -> c . flc_flags );
19551957 if (!lock )
19561958 return - ENOMEM ;
19571959
@@ -1990,7 +1992,7 @@ cifs_setlk(struct file *file, struct file_lock *flock, __u32 type,
19901992 rc = server -> ops -> mand_unlock_range (cfile , flock , xid );
19911993
19921994out :
1993- if ((flock -> fl_flags & FL_POSIX ) || (flock -> fl_flags & FL_FLOCK )) {
1995+ if ((flock -> c . flc_flags & FL_POSIX ) || (flock -> c . flc_flags & FL_FLOCK )) {
19941996 /*
19951997 * If this is a request to remove all locks because we
19961998 * are closing the file, it doesn't matter if the
@@ -1999,7 +2001,7 @@ cifs_setlk(struct file *file, struct file_lock *flock, __u32 type,
19992001 */
20002002 if (rc ) {
20012003 cifs_dbg (VFS , "%s failed rc=%d\n" , __func__ , rc );
2002- if (!(flock -> fl_flags & FL_CLOSE ))
2004+ if (!(flock -> c . flc_flags & FL_CLOSE ))
20032005 return rc ;
20042006 }
20052007 rc = locks_lock_file_wait (file , flock );
@@ -2020,7 +2022,7 @@ int cifs_flock(struct file *file, int cmd, struct file_lock *fl)
20202022
20212023 xid = get_xid ();
20222024
2023- if (!(fl -> fl_flags & FL_FLOCK )) {
2025+ if (!(fl -> c . flc_flags & FL_FLOCK )) {
20242026 rc = - ENOLCK ;
20252027 free_xid (xid );
20262028 return rc ;
@@ -2071,7 +2073,8 @@ int cifs_lock(struct file *file, int cmd, struct file_lock *flock)
20712073 xid = get_xid ();
20722074
20732075 cifs_dbg (FYI , "%s: %pD2 cmd=0x%x type=0x%x flags=0x%x r=%lld:%lld\n" , __func__ , file , cmd ,
2074- flock -> fl_flags , flock -> fl_type , (long long )flock -> fl_start ,
2076+ flock -> c .flc_flags , flock -> c .flc_type ,
2077+ (long long )flock -> fl_start ,
20752078 (long long )flock -> fl_end );
20762079
20772080 cfile = (struct cifsFileInfo * )file -> private_data ;
0 commit comments