Skip to content

Commit

Permalink
vfs: Update fs.h to use inline functions when no file locking set
Browse files Browse the repository at this point in the history
This avoids various issues which might give rise to compiler warnings
about missing functions and/or unused variable with the previous
macros. This also fixes a bug where one of the macros was returning
0, but it should have been void.

Reported-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Tested-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Steven Whitehouse authored and Al Viro committed Mar 27, 2009
1 parent 10f303a commit c2aca5e
Showing 1 changed file with 139 additions and 26 deletions.
165 changes: 139 additions & 26 deletions include/linux/fs.h
Original file line number Diff line number Diff line change
Expand Up @@ -1063,34 +1063,147 @@ extern int lease_modify(struct file_lock **, int);
extern int lock_may_read(struct inode *, loff_t start, unsigned long count);
extern int lock_may_write(struct inode *, loff_t start, unsigned long count);
#else /* !CONFIG_FILE_LOCKING */
#define fcntl_getlk(a, b) ({ -EINVAL; })
#define fcntl_setlk(a, b, c, d) ({ -EACCES; })
static inline int fcntl_getlk(struct file *file, struct flock __user *user)
{
return -EINVAL;
}

static inline int fcntl_setlk(unsigned int fd, struct file *file,
unsigned int cmd, struct flock __user *user)
{
return -EACCES;
}

#if BITS_PER_LONG == 32
#define fcntl_getlk64(a, b) ({ -EINVAL; })
#define fcntl_setlk64(a, b, c, d) ({ -EACCES; })
static inline int fcntl_getlk64(struct file *file, struct flock64 __user *user)
{
return -EINVAL;
}

static inline int fcntl_setlk64(unsigned int fd, struct file *file,
unsigned int cmd, struct flock64 __user *user)
{
return -EACCES;
}
#endif
#define fcntl_setlease(a, b, c) ({ 0; })
#define fcntl_getlease(a) ({ 0; })
#define locks_init_lock(a) ({ })
#define __locks_copy_lock(a, b) ({ })
#define locks_copy_lock(a, b) ({ })
#define locks_remove_posix(a, b) ({ })
#define locks_remove_flock(a) ({ })
#define posix_test_lock(a, b) ({ 0; })
#define posix_lock_file(a, b, c) ({ -ENOLCK; })
#define posix_lock_file_wait(a, b) ({ -ENOLCK; })
#define posix_unblock_lock(a, b) (-ENOENT)
#define vfs_test_lock(a, b) ({ 0; })
#define vfs_lock_file(a, b, c, d) (-ENOLCK)
#define vfs_cancel_lock(a, b) ({ 0; })
#define flock_lock_file_wait(a, b) ({ -ENOLCK; })
#define __break_lease(a, b) ({ 0; })
#define lease_get_mtime(a, b) ({ })
#define generic_setlease(a, b, c) ({ -EINVAL; })
#define vfs_setlease(a, b, c) ({ -EINVAL; })
#define lease_modify(a, b) ({ -EINVAL; })
#define lock_may_read(a, b, c) ({ 1; })
#define lock_may_write(a, b, c) ({ 1; })
static inline int fcntl_setlease(unsigned int fd, struct file *filp, long arg)
{
return 0;
}

static inline int fcntl_getlease(struct file *filp)
{
return 0;
}

static inline void locks_init_lock(struct file_lock *fl)
{
return;
}

static inline void __locks_copy_lock(struct file_lock *new, struct file_lock *fl)
{
return;
}

static inline void locks_copy_lock(struct file_lock *new, struct file_lock *fl)
{
return;
}

static inline void locks_remove_posix(struct file *filp, fl_owner_t owner)
{
return;
}

static inline void locks_remove_flock(struct file *filp)
{
return;
}

static inline void posix_test_lock(struct file *filp, struct file_lock *fl)
{
return;
}

static inline int posix_lock_file(struct file *filp, struct file_lock *fl,
struct file_lock *conflock)
{
return -ENOLCK;
}

static inline int posix_lock_file_wait(struct file *filp, struct file_lock *fl)
{
return -ENOLCK;
}

static inline int posix_unblock_lock(struct file *filp,
struct file_lock *waiter)
{
return -ENOENT;
}

static inline int vfs_test_lock(struct file *filp, struct file_lock *fl)
{
return 0;
}

static inline int vfs_lock_file(struct file *filp, unsigned int cmd,
struct file_lock *fl, struct file_lock *conf)
{
return -ENOLCK;
}

static inline int vfs_cancel_lock(struct file *filp, struct file_lock *fl)
{
return 0;
}

static inline int flock_lock_file_wait(struct file *filp,
struct file_lock *request)
{
return -ENOLCK;
}

static inline int __break_lease(struct inode *inode, unsigned int mode)
{
return 0;
}

static inline void lease_get_mtime(struct inode *inode, struct timespec *time)
{
return;
}

static inline int generic_setlease(struct file *filp, long arg,
struct file_lock **flp)
{
return -EINVAL;
}

static inline int vfs_setlease(struct file *filp, long arg,
struct file_lock **lease)
{
return -EINVAL;
}

static inline int lease_modify(struct file_lock **before, int arg)
{
return -EINVAL;
}

static inline int lock_may_read(struct inode *inode, loff_t start,
unsigned long len)
{
return 1;
}

static inline int lock_may_write(struct inode *inode, loff_t start,
unsigned long len)
{
return 1;
}

#endif /* !CONFIG_FILE_LOCKING */


Expand Down

0 comments on commit c2aca5e

Please sign in to comment.