summaryrefslogtreecommitdiffstats
path: root/xlators/nfs/server/src/nfs3-helpers.c
Commit message (Collapse)AuthorAgeFilesLines
* remove 'gen' from iatt/protocol structuresAmar Tumballi2010-09-141-2/+0
| | | | | | | | Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 971 (dynamic volume management) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
* nfs,nfs3,mnt3: Transition fh resolution to gfidShehjar Tikoo2010-09-141-122/+117
| | | | | | | | Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 971 (dynamic volume management) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
* gfid: changes in inode managementAnand Avati2010-09-041-3/+0
| | | | | | | | | | | | | - incorporate usage of uuid (gfid) as the key for finding inodes - deprecate inode number/generation number based inode_get - undo code specific to generation numbers (attic list etc.) Signed-off-by: Anand V. Avati <avati@blackhole.gluster.com> Signed-off-by: Anand V. Avati <avati@amp.gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 971 (dynamic volume management) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
* nfs3: Return ESTALE when going beyond fh-hashcount or max-hashesShehjar Tikoo2010-08-311-7/+40
| | | | | | | | | | | | During fh resolution, if we go beyond the max hashes support by gnfs or if we go beyond the dir depth specified in the filehandle, then return ESTALE. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 1378 (Deep directory creation crashes gnfs) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1378
* nfs3: Logging and comments made more accurateShehjar Tikoo2010-08-311-11/+20
| | | | | | | | Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 1378 (Deep directory creation crashes gnfs) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1378
* nfs3: Unref dir fd once usage ends in hard fh resolutionShehjar Tikoo2010-08-311-3/+29
| | | | | | | | | | | | | | | | | | There are three conditions when a dir fd_t needs to be unrefed when: a. the inode being searched is found as the candidate entry, b. we have exhausted all the entries in the current dir, c. we decide to step into a child directory because of a hash match. This decision is made in nfs3_fh_resolve_check_response. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 1397 (Cached dir fd_ts are a leakin') URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1397
* nfs3: Dont ref dir fd_t used in hard fh resolutionShehjar Tikoo2010-08-311-7/+9
| | | | | | | | | | | | ..because the extra ref was under the mistaken assumption that directory fd_t will be cached even during hard fh resolution and that is not the case. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 1397 (Cached dir fd_ts are a leakin') URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1397
* nfs3: Dont ref cached fd after fd_lookupShehjar Tikoo2010-08-311-1/+1
| | | | | | | | | | ..because fd_lookup returns a ref'd fd_t. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 1397 (Cached dir fd_ts are a leakin') URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1397
* xlators/nfs: nfs3-helpers.c remove dead assignments.Sachidananda2010-08-221-7/+7
| | | | | | | | Signed-off-by: Sachidananda Urs <sac@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 1115 () URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1115
* nfs, nfs/rpc: Rename functions to prevent gfrpcsvc conflictShehjar Tikoo2010-08-101-1/+1
| | | | | | | | Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 1274 (nfs fails to start) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1274
* nfs3: NULL fdentry check before removing from fdcacheShehjar Tikoo2010-07-281-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | Suppose a file name 1 is created and some data is written to it. After this another 512 files are newly created and written to. When the the 513th file is created and an fd_t opened for it, it results in 1's fd_t being replaced in the fd-lru with 513th file's fd_t. This is the correct behaviour resulting in all refs getting unref from the fd_t of 1 and the fd and all related state being freed. But, in some workloads, some refs are still pending even after the fd_t is removed from LRU, resulting in the fd still being bound to the inode. In nfs3svc_remove_cbk, while removing the inode state, we also ensure that any fd_ts in the cache for this inode are also removed. While removing the fd_t, this situation where the fd_t has replaced with another, even while a ref remains on the fd_t, results in a crash in the fdcache_remove path in nfs3svc_remove_cbk. This happens because the fd_ctx_get results in a NULL value because the ctx was already deleted when this fd_t was removed from fd-lru earlier. This patch fixes the crash by introducing a NULL check. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 885 ([NFS Xlator] Crash in nfs3_fdcache_update) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=885
* nfs3: Return ESTALE when fh resolver exhausts direntsShehjar Tikoo2010-07-281-1/+1
| | | | | | | | | | | | During hard fh resolution, if a directory traversal goes right through to end-of-dir without finding a hash match, we need to return an ESTALE, not ENOENT. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 854 (nfs server didn't start) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=854
* nfs3: Stop ESTALE from falling into SERVERFAULTShehjar Tikoo2010-07-281-0/+1
| | | | | | | | Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 854 (nfs server didn't start) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=854
* nfs3: Fix race updating op queue on uncached fd openShehjar Tikoo2010-07-061-55/+150
| | | | | | | | | | | | | The order of locking while performing async fd opens was resulting in a deadlock when a particular pattern of operations was generated by compilebench. This patch improves handling of those situations while locking the fd-cache, inode and inode queue. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 1047 (Compilebench hangs nfs server) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1047
* NULL dereference fixes in code base after running with 'clang'Amar Tumballi2010-07-021-2/+2
| | | | | | | | | | | | * 212 logical (NULL deref/divide by zero) errors reduced to 28 (27 of them in contrib/ and lex part of codebase, 1 is invalid) * 11 API errors reduced to 0 Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 966 (NULL check for avoiding NULL dereferencing of pointers..) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=966
* nfs3: Funge . and .. ino/gen in readdir of rootShehjar Tikoo2010-06-011-7/+75
| | | | | | | | | | | | | | | | | In the readdir reply for the root of the export, replace the ino and gen number for the . and .. entries with 1 and 0 respectively. On clients which inspect this field, the client will error out due to the change in inode number of the root directory when see for "." .. also needs to be replaced because we do not have a concept of the parent directory of root. The return of 1 and 0 is the same as the behaviour of: stat /.. command. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 942 (NFS crashes as a vmware ESX data store) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=942
* nfs: fix warning on 32 bitCsaba Henk2010-05-111-2/+2
| | | | | | | | Signed-off-by: Csaba Henk <csaba@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 902 (iozone hangs during random read throughput test) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=902
* nfs3: Round-up read reply bytes of multi-vector replyShehjar Tikoo2010-05-101-3/+1
| | | | | | | | | | | | | | | | | A previos commit brought in support for returning read replies when subvolumes return reads in multiple iovecs. This did not completely fix the problem since the bytes in iovecs all together could be unaligned with the 4 byte boundary as needed by XDR for the opaque data. This resulted in read requests being either retransmitted or rejected with an error message in syslog on the NFS client. Signed-off-by: Shehjar Tikoo <shehjart@dev.gluster.com> Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 902 (iozone hangs during random read throughput test) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=902
* nfs3: Submit multiple vectors received in read callbackShehjar Tikoo2010-05-081-4/+10
| | | | | | | | | | | | | | There is a possibility of io-cache or read-ahead returning a read buffer that straddles two separate pages in ioc or ra, through two struct iovecs. Current nfs3 read reply does not return as many vectors as received from a subvolume leading to a short read for the NFS client. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 902 (iozone hangs during random read throughput test) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=902
* nfs3: Use standard macro to return ESTALEShehjar Tikoo2010-05-081-5/+2
| | | | | | | | Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 857 (Crash in afr_sh_entry_expunge_entry_cbk) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=857
* nfs3: Fix NFSv3 string error for EISDIRShehjar Tikoo2010-05-051-1/+1
| | | | | | | | Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 858 (Crash with afr_local_cleanup) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=858
* Memory accounting changesVijay Bellur2010-04-231-16/+19
| | | | | | | | | | | Memory accounting Changes. Thanks to Vinayak Hegde and Csaba Henk for their contributions. Signed-off-by: Vijay Bellur <vijay@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 329 (Replacing memory allocation functions with mem-type functions) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=329
* NFS: type fixes: some portability cleanupCsaba Henk2010-04-081-2/+2
| | | | | | | | Signed-off-by: Csaba Henk <csaba@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 399 (NFS translator with Mount v3 and NFS v3 support) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=399
* NFS: type fixes: sanitize rpcgen generated typedefsCsaba Henk2010-04-081-7/+7
| | | | | | | | Signed-off-by: Csaba Henk <csaba@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 399 (NFS translator with Mount v3 and NFS v3 support) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=399
* nfs3: Allow all access to superuser except execute at all timesShehjar Tikoo2010-04-081-1/+34
| | | | | | | | | | | | | | | During building glusterfs from source, the make phase fails because the access test by super user actually returns the access test bits using only the user, group and other, without accounting for the special status of super-user. This results in a permission denied for the super-user. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 807 (GlusterFS compilation fails on NFS Client) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=807
* nfs: Redesign fop argument passing to support single volfile useShehjar Tikoo2010-04-021-20/+20
| | | | | | | | | | | | | | | | | | | | | The current design of the interaction between the generic NFS layer and the protocol handlers like mount3 and nfs3 is such that it does not allow using a single volume file which contains the nfs/server and the protocol/server. This is because the common nfs-fops layer assumes that ctx->top is always the nfs/server. This is wrong. The fops layer needs access to top because top or rather the generic NFS xlator's private state has a mem-pool. The fops layer needs this mem-pool to get memory for storing per-fop state. Since the fops layer cannot anymore take ctx->top be the nfs/server, all layers need to start passing the nfs/server xlator_t right down to the fops layer. I am also taking this chance to remove the synchronous equivalents of the fops and also remove the dirent caching directory operations. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 770 (NFS Xlator - Crash when both GlusterFS server/NFS Server are in the same file) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=770
* nfs: Add NFSv3 protocol supportShehjar Tikoo2010-03-311-0/+2825
Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 399 (NFS translator with Mount v3 and NFS v3 support) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=399