06 Jan, 2012

2 commits

  • Reduce object size by deduplicating formats.

    Use vsprintf extension %pV.
    Rename P9_DPRINTK uses to p9_debug, align arguments.
    Add function for _p9_debug and macro to add __func__.
    Add missing "\n"s to p9_debug uses.
    Remove embedded function names as p9_debug adds it.
    Remove P9_EPRINTK macro and convert use to pr_.
    Add and use pr_fmt and pr_.

    $ size fs/9p/built-in.o*
    text data bss dec hex filename
    62133 984 16000 79117 1350d fs/9p/built-in.o.new
    67342 984 16928 85254 14d06 fs/9p/built-in.o.old
    $ size net/9p/built-in.o*
    text data bss dec hex filename
    88792 4148 22024 114964 1c114 net/9p/built-in.o.new
    94072 4148 23232 121452 1da6c net/9p/built-in.o.old

    Signed-off-by: Joe Perches
    Signed-off-by: Eric Van Hensbergen

    Joe Perches
     
  • In v9fs_file_do_lock() we need to check return value of
    schedule_timeout_interruptible() and exit the loop when it
    returns nonzero, otherwise the loop is not really interruptible
    and after the signal, the loop is no longer throttled by
    P9_LOCK_TIMEOUT.

    Signed-off-by: Jim Garlick
    Signed-off-by: Eric Van Hensbergen

    Jim Garlick
     

06 Sep, 2011

2 commits


21 Jul, 2011

1 commit

  • Btrfs needs to be able to control how filemap_write_and_wait_range() is called
    in fsync to make it less of a painful operation, so push down taking i_mutex and
    the calling of filemap_write_and_wait() down into the ->fsync() handlers. Some
    file systems can drop taking the i_mutex altogether it seems, like ext3 and
    ocfs2. For correctness sake I just pushed everything down in all cases to make
    sure that we keep the current behavior the same for everybody, and then each
    individual fs maintainer can make up their mind about what to do from there.
    Thanks,

    Acked-by: Jan Kara
    Signed-off-by: Josef Bacik
    Signed-off-by: Al Viro

    Josef Bacik
     

23 Mar, 2011

3 commits


15 Mar, 2011

8 commits


28 Oct, 2010

7 commits

  • SYNOPSIS
    size[4] Tfsync tag[2] fid[4] datasync[4]

    size[4] Rfsync tag[2]

    DESCRIPTION

    The Tfsync transaction transfers ("flushes") all modified in-core data of
    file identified by fid to the disk device (or other permanent storage
    device) where that file resides.

    If datasync flag is specified data will be fleshed but does not flush
    modified metadata unless that metadata is needed in order to allow a
    subsequent data retrieval to be correctly handled.

    Signed-off-by: Venkateswararao Jujjuri
    Signed-off-by: Eric Van Hensbergen

    Venkateswararao Jujjuri (JV)
     
  • Synopsis

    size[4] TGetlock tag[2] fid[4] getlock[n]
    size[4] RGetlock tag[2] getlock[n]

    Description

    TGetlock is used to test for the existence of byte range posix locks on a file
    identified by given fid. The reply contains getlock structure. If the lock could
    be placed it returns F_UNLCK in type field of getlock structure. Otherwise it
    returns the details of the conflicting locks in the getlock structure

    getlock structure:
    type[1] - Type of lock: F_RDLCK, F_WRLCK
    start[8] - Starting offset for lock
    length[8] - Number of bytes to check for the lock
    If length is 0, check for lock in all bytes starting at the location
    'start' through to the end of file
    pid[4] - PID of the process that wants to take lock/owns the task
    in case of reply
    client[4] - Client id of the system that owns the process which
    has the conflicting lock

    Signed-off-by: M. Mohan Kumar
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Venkateswararao Jujjuri
    Signed-off-by: Eric Van Hensbergen

    M. Mohan Kumar
     
  • Synopsis

    size[4] TLock tag[2] fid[4] flock[n]
    size[4] RLock tag[2] status[1]

    Description

    Tlock is used to acquire/release byte range posix locks on a file
    identified by given fid. The reply contains status of the lock request

    flock structure:
    type[1] - Type of lock: F_RDLCK, F_WRLCK, F_UNLCK
    flags[4] - Flags could be either of
    P9_LOCK_FLAGS_BLOCK - Blocked lock request, if there is a
    conflicting lock exists, wait for that lock to be released.
    P9_LOCK_FLAGS_RECLAIM - Reclaim lock request, used when client is
    trying to reclaim a lock after a server restrart (due to crash)
    start[8] - Starting offset for lock
    length[8] - Number of bytes to lock
    If length is 0, lock all bytes starting at the location 'start'
    through to the end of file
    pid[4] - PID of the process that wants to take lock
    client_id[4] - Unique client id

    status[1] - Status of the lock request, can be
    P9_LOCK_SUCCESS(0), P9_LOCK_BLOCKED(1), P9_LOCK_ERROR(2) or
    P9_LOCK_GRACE(3)
    P9_LOCK_SUCCESS - Request was successful
    P9_LOCK_BLOCKED - A conflicting lock is held by another process
    P9_LOCK_ERROR - Error while processing the lock request
    P9_LOCK_GRACE - Server is in grace period, it can't accept new lock
    requests in this period (except locks with
    P9_LOCK_FLAGS_RECLAIM flag set)

    Signed-off-by: M. Mohan Kumar
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Venkateswararao Jujjuri
    Signed-off-by: Eric Van Hensbergen

    M. Mohan Kumar
     
  • SYNOPSIS
    size[4] Tfsync tag[2] fid[4]

    size[4] Rfsync tag[2]

    DESCRIPTION

    The Tfsync transaction transfers ("flushes") all modified in-core data of
    file identified by fid to the disk device (or other permanent storage
    device) where that file resides.

    Signed-off-by: Venkateswararao Jujjuri
    Signed-off-by: Eric Van Hensbergen

    Venkateswararao Jujjuri (JV)
     
  • Signed-off-by: Venkateswararao Jujjuri
    Signed-off-by: Eric Van Hensbergen

    Venkateswararao Jujjuri (JV)
     
  • the same calculation is done in p9_client_write

    Signed-off-by: Venkateswararao Jujjuri
    Signed-off-by: Badari Pulavarty
    Signed-off-by: Eric Van Hensbergen

    jvrao
     
  • Current 9p client file write code does not check for RLIMIT_FSIZE resource.
    This bug was found by running LTP test case for setrlimit. This bug is fixed
    by calling generic_write_checks before sending the write request to the
    server.
    Without this patch: the write function is allowed to write above the
    RLIMIT_FSIZE set by user.
    With this patch: the write function checks for RLIMIT_SIZE and writes upto
    the size limit.

    Signed-off-by: Harsh Prateek Bora
    Signed-off-by: Eric Van Hensbergen

    Harsh Prateek Bora
     

03 Aug, 2010

2 commits

  • Implement 9p2000.L version of open(LOPEN) interface in 9p client.

    For LOPEN, no need to convert the flags to and from 9p mode to VFS mode.

    Synopsis:

    size[4] Tlopen tag[2] fid[4] mode[4]

    size[4] Rlopen tag[2] qid[13] iounit[4]

    [Fix mode bit format - jvrao@linux.vnet.ibm.com]

    Signed-off-by: M. Mohan Kumar
    Signed-off-by: Venkateswararao Jujjuri
    Signed-off-by: Eric Van Hensbegren

    M. Mohan Kumar
     
  • Change the v9fs_file_readn function to limit the maximum transfer size
    based on the iounit or msize.

    Also remove the redundant check for limiting the transfer size in
    v9fs_file_write. This check is done by p9_client_write.

    Signed-off-by: M. Mohan Kumar
    Signed-off-by: Eric Van Hensbergen

    M. Mohan Kumar
     

28 May, 2010

1 commit


22 May, 2010

1 commit


13 Mar, 2010

2 commits

  • While investigating a bug, I came across a possible bug in v9fs. The
    problem is similar to the one reported for NFS by ASANO Masahiro in
    http://lkml.org/lkml/2005/12/21/334.

    v9fs_file_lock() will skip locks on file which has mode set to 02666.
    This is a problem in cases where the mode of the file is changed after
    a process has obtained a lock on the file. Such a lock will be skipped
    during unlock and the machine will end up with a BUG in
    locks_remove_flock().

    v9fs_file_lock() should skip the check for mandatory locks when
    unlocking a file.

    Signed-off-by: Sachin Prabhu
    Signed-off-by: Eric Van Hensbergen

    Sachin Prabhu
     
  • Fixes a simple bug so that large files beyond 2GB can be created.

    Signed-off-by: Venkateswararao Jujjuri
    Signed-off-by: Badari Pulavarty
    Signed-off-by: Eric Van Hensbergen

    jvrao
     

06 Mar, 2010

1 commit

  • Add 9P2000.u and 9P2010.L protocol flags to V9FS VFS

    This patch adds 9P2000.u and 9P2010.L protocol flags into V9FS VFS side code
    and removes the single flag used for 'extended'.

    Signed-off-by: Sripathi Kodi
    Signed-off-by: Eric Van Hensbergen

    Sripathi Kodi
     

09 Feb, 2010

1 commit

  • Implement the fsync in the client side by marking stat field values to 'don't touch' so that server may
    interpret it as a request to guarantee that the contents of the associated file are committed to stable
    storage before the Rwstat message is returned.

    Without this patch, calling fsync on a 9p file results in "Invalid argument" error. Please check the attached
    C program.

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: M. Mohan Kumar
    Acked-by: Venkateswararao Jujjuri (JV)
    Signed-off-by: Eric Van Hensbergen

    M. Mohan Kumar
     

24 Sep, 2009

3 commits

  • This patch adds a persistent, read-only caching facility for
    9p clients using the FS-Cache caching backend.

    When the fscache facility is enabled, each inode is associated
    with a corresponding vcookie which is an index into the FS-Cache
    indexing tree. The FS-Cache indexing tree is indexed at 3 levels:
    - session object associated with each mount.
    - inode/vcookie
    - actual data (pages)

    A cache tag is chosen randomly for each session. These tags can
    be read off /sys/fs/9p/caches and can be passed as a mount-time
    parameter to re-attach to the specified caching session.

    Signed-off-by: Abhishek Kulkarni
    Signed-off-by: Eric Van Hensbergen

    Abhishek Kulkarni
     
  • When using the cache=loose flags, the inode's size was not being
    updated correctly on a remote write. Thus subsequent reads of
    the whole file resulted in a truncated read. Fix it.

    Signed-off-by: Abhishek Kulkarni
    Signed-off-by: Eric Van Hensbergen

    Abhishek Kulkarni
     
  • Change all occurrence of inode->i_size with i_size_read() or i_size_write()
    as appropriate.

    Signed-off-by: Abhishek Kulkarni
    Signed-off-by: Eric Van Hensbergen

    Abhishek Kulkarni
     

23 Oct, 2008

1 commit


18 Oct, 2008

4 commits

  • Now that the new protocol functions are in place, this patch switches
    the client code to using the new support code.

    Signed-off-by: Eric Van Hensbergen

    Eric Van Hensbergen
     
  • Currently, the 9p net wire operation ensures that all data is sent by sending
    multiple packets if the data requested is larger than the msize. This is
    better handled in the vfs code so that we can simplify wire operations to
    being concerned with only putting data onto and taking data off of the wire.

    Signed-off-by: Eric Van Hensbergen

    Eric Van Hensbergen
     
  • There are a couple of methods in the client code which aren't actually
    wire operations. To keep things organized cleaner, these operations are
    being moved to the fs layer.

    This patch moves the readn meta-function (which executes multiple wire
    reads until a buffer is full) to the fs layer.

    Signed-off-by: Eric Van Hensbergen

    Eric Van Hensbergen
     
  • Currently there are two separate versions of read and write. One for
    dealing with user buffers and the other for dealing with kernel buffers.
    There is a tremendous amount of code duplication in the otherwise
    identical versions of these functions. This patch adds an additional
    user buffer parameter to read and write and conditionalizes handling of
    the buffer on whether the kernel buffer or the user buffer is populated.

    Signed-off-by: Eric Van Hensbergen

    Eric Van Hensbergen
     

03 Jul, 2008

1 commit

  • The legacy protocol's open operation doesn't handle an append operation
    (it is expected that the client take care of it). We were incorrectly
    passing the extended protocol's flag through even in legacy mode. This
    was reported in bugzilla report #10689. This patch fixes the problem
    by disallowing extended protocol open modes from being passed in legacy
    mode and implemented append functionality on the client side by adding
    a seek after the open.

    Signed-off-by: Eric Van Hensbergen

    Eric Van Hensbergen