Linux: define llseek operations
authorMarc Dionne <marc.c.dionne@gmail.com>
Fri, 5 Nov 2010 21:30:02 +0000 (17:30 -0400)
committerJeffrey Altman <jaltman@openafs.org>
Fri, 19 Nov 2010 04:48:47 +0000 (20:48 -0800)
With kernel 2.6.37 it is now mandatory to define the llseek operation
for files and directories.  If these are not defined, no_llseek is
called, and any attempt to seek returns ESPIPE.

Most file systems use generic_file_llseek, but it seems safer to use
default_llseek which is what the vfs used to call for us by default.
In 2.6.37 these two functions are actually functionally identical.

Change-Id: I7ad736e3953c4feaa51afb9f7ff2760c3140373f
Reviewed-on: http://gerrit.openafs.org/3292
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/afs/LINUX/osi_vnodeops.c

index c9d6709..b479475 100644 (file)
@@ -659,6 +659,7 @@ struct file_operations afs_dir_fops = {
 #endif
   .open =      afs_linux_open,
   .release =   afs_linux_release,
+  .llseek =    default_llseek,
 };
 
 struct file_operations afs_file_fops = {
@@ -692,6 +693,7 @@ struct file_operations afs_file_fops = {
 #ifdef STRUCT_FILE_OPERATIONS_HAS_FLOCK
   .flock =     afs_linux_flock,
 #endif
+  .llseek =    default_llseek,
 };