summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* io-cache: fix warning by initializing conf = NULLAnand V. Avati2009-06-151-1/+1
|
* read-ahead: fix warning by initializing conf = NULLAnand V. Avati2009-06-151-1/+1
|
* libglusterfsclient: Call inode_lookup to prevent pruningShehjar Tikoo2009-06-121-5/+7
| | | | | | | | | | | | | This bug shows up while using unfs3 with replicate. The absence of an inode_lookup on a looked-up/created inode results in it getting pruned from the inode table. Consequently, a subsequent lookup for the inode results in a different inode number being returned by replicate. This breaks unfs3 because it tries to remember the inode numbers returned by two different stat-family calls. Resolves: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=11 Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* strict check of extended attribute flags while opening a striped fileAmar Tumballi2009-06-112-68/+223
| | | | | | | | | | Added a fd_ctx structure for stripe, which takes care of understanding the extended attribute flags, and opening the right blocks in order (to make sure the read/write operations happen in order). Helps to handle situations like accidentally adding subvolumes to stripe, etc Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* stripe: don't allow entry modification operations when any node is downAmar Tumballi2009-06-111-5/+13
| | | | | | | | if entry modification operations (like create/mknod/rename) happen when there is a node down, there will be inconsistency in striped fs. rather than curing it, prevent the issue from happening Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* stripe cleanupAmar Tumballi2009-06-113-2621/+2759
| | | | | | | | | | | | | stripe.c: indentation cleanup log messages cleanup coding standard guidelines removed ERR_ABORTs stripe.h moved the structure definitions here Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* io-cache: handle memory allocation failuresRaghavendra G2009-06-114-65/+373
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Initialize central logging in glusterfs main().Vikas Gorur2009-06-111-0/+10
| | | | | | Modified from patch 522 (made a function extern) -- Avati Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Implemented LOG MOP in server-protocol.Vikas Gorur2009-06-111-0/+28
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Log to a central server.Vikas Gorur2009-06-112-8/+397
| | | | | | | | | | | | | Several functions to support centralized logging: - create a logging thread upon init - gf_log submits log messages to the logging thread which in turn sends it to the server using the MOP log - on the server side, log messages from a client are written to the filename <log file name>.client-<transport-identifier> Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Functions to store a central log flag in TLS.Vikas Gorur2009-06-112-0/+64
| | | | | | | The flag is set in TLS so that a re-entry into gf_central_log does not deadlock. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Include glusterfs.h in dict.cVikas Gorur2009-06-111-0/+1
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Implemented LOG MOP in client-protocol.Vikas Gorur2009-06-111-0/+61
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Added MOP log to libglusterfs/*Vikas Gorur2009-06-117-0/+52
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Do not fail over readdir in replicate.Vikas Gorur2009-06-111-27/+4
| | | | | | | | | If readdir fails on a subvolume, do not fail-over to the next subvolume, since the order of entries and offsets won't be same on all subvolumes. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Do itransform on every entry in readdir_cbk.Vikas Gorur2009-06-111-4/+9
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* booster: fix memory corruption in booster_cleanupRaghavendra G2009-06-111-4/+10
| | | | | | | - calling glusterfs_umount_all leads to memory corruption. hence commenting out for timebeing. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: reset the vmplist and vmpentries to 0 in glusterfs_resetRaghavendra G2009-06-111-0/+6
| | | | | | | - Generally glusterfs_reset is called after fork in child to empty out vmplist. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* booster: implement fcntl.Raghavendra G2009-06-111-1/+104
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: implement glusterfs_fcntl.Raghavendra G2009-06-112-0/+117
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* booster: implement readdir_r and readdir64_r.Raghavendra G2009-06-112-0/+70
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: implement glusterfs_readdir_rRaghavendra G2009-06-112-0/+72
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: update offset in glusterfs_read_async_cbk only if offset ↵Raghavendra G2009-06-112-4/+10
| | | | | | | | | | stored in fd_ctx is used. - this helps in implementing sendfile(2). manpage says that "If offset is not NULL, then sendfile() does not modify the current file offset of in_fd" Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* booster: call glusterfs_umount_all during cleanupRaghavendra G2009-06-111-0/+4
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* booster: implement sendfile.Raghavendra G2009-06-111-0/+58
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: implement glusterfs_sendfile.Raghavendra G2009-06-112-0/+171
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: add glusterfs_umount_all.Raghavendra G2009-06-112-0/+23
| | | | | | | - unmounts all the entries in the vmplist. - this api helps booster to cleanup all the mounts in a single call. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: make glusterfs_umount thread safeRaghavendra G2009-06-111-18/+42
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: make glusterfs_mount thread safe.Raghavendra G2009-06-111-51/+80
| | | | | | | - this patch also checks for the presence of vmp before adding an vmpentry. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* booster: remove mount table which maps a path to glusterfs handler.Raghavendra G2009-06-111-236/+86
| | | | | | | | | | - if there are any glusterfs mounts(real, not virtual) which are not specified through booster-fstab those mounts are also added to the virtual mountpoint list of libglusterfsclient. This also removes the mount table in booster and all the mounts whether they are real or virtual are handled by libglusterfsclient. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Filter out changelog xattrs in replicate.Vikas Gorur2009-06-111-1/+64
| | | | | | | | The AFR changelog xattrs, "trusted.afr.*" are now filtered and prevented from being visible on the mountpoint. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* io-threads: Fix missed notification in sem_timedwaitShehjar Tikoo2009-06-112-5/+4
| | | | | | | | | | | | | | | We're performing a calculation for skewing idle time that resulted in a timespec.tv_nsec value becoming larger than 1000 million or less than 0, forcing sem_timedwait to return with an EINVAL instead of waiting for a request notification from sem_post in iot_notify_worker(). This resulted in a missed notification that resulted in a hang followed by a timeout on the protocol/client side. This commit avoids the over- and under-flow in tv_nsec by skewing the tv_sec value instead. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* read-ahead: handle memory allocation failuresRaghavendra G2009-06-113-17/+111
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* read-ahead: return with error code EBADF for fops on fds without file set in ↵Raghavendra G2009-06-111-11/+45
| | | | | | | | | | | their context. - since a successful open/create will _always_ set a pointer to ra_file_t in context of fd, this fix makes sense. - an example of operations on bad fd can be afr sending read on the child which was down during open. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* read-ahead: unwind with a return value of -1 and error code of ENOMEM on ↵Raghavendra G2009-06-111-0/+4
| | | | | | memory allocation for ra_file in open/create Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* removed unused option 'page-size' in io-cacheAmar Tumballi2009-06-091-5/+0
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Print PID after daemonizing glusterfs.Vikas Gorur2009-06-092-8/+21
| | | | | | | | | | PID used to be printed before glusterfs became a daemon, which is incorrect since becoming a daemon involves forking and thus the PID changes. Fixes bug #8. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* configure.ac: print summary to stdoutAnand V. Avati2009-06-091-2/+0
|
* server-helpers: cleanup connection only if there are no active transports.Raghavendra G2009-06-083-129/+194
| | | | | | | | | | | - thanks to Ioannis Aslanidis <iaslanidis@flumotion.com> for reporting. - breakup the server_connection_cleanup into smaller procedures. - do following operations in a single atomic operation. 1. conn->active_transports-- 2. collecting pointer to lock table and all fds if there are no active transports this will avoid any race conditions. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* Fix crash in afr data self heal. Bugzilla ID: 3Vikas Gorur2009-06-081-0/+2
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: Avoid dirent copies in readdir cbkShehjar Tikoo2009-06-082-7/+16
| | | | | | | | | We can avoid memory allocation, de-allocation and data copies by just using the entries passed to us from a lower layer and by de-linking the entries from the original list. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfs: Add empty and NULL dirents list checksShehjar Tikoo2009-06-082-0/+12
| | | | | | | | | | | | These checks are needed in case a higher layer intends to delink the dirent list and passes a NULL pointer to fop_readdir_cbk_stub for the entries parameter. Consequently, the gf_dirent_free must guard against an empty list because the stub that is passed to it mgiht have an empty dirent list. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* ib-verbs error log enhancementAmar Tumballi2009-06-031-3/+10
| | | | | | | | | | | | | Earlier it was thought that only not having 'opensm' running will cause handshake errors in ib-verbs. Recently understood that even having a wrong 'ib-verbs.port' option can also cause the same behavior, and it took more than 5-6 e-mail iterations with the user and lot of brain cycle in support team to understand the problem. Made the log message more descriptive, so user can be find the cause, or can send us email without wasting time. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* io-cache: prevent frames from getting woken up while page is getting validatedAnand Avati2009-06-031-1/+1
| | | | | | | | | | | | | | | | 1. A page will be put on the inode waitq if the 'freshness' has to be verified with an fstat() 2. while the fstat is in transit, other calls (like lookup) can update ioc_inode->tv, resetting the freshness (page still on inode waitq) 3. Another read request on the same page, after the updated freshness, will wake up the page frames neglecting the fact that the page is also waiting on the inode (waiting for the fstat completion) 4. once the page's frames are woken, the page becomes elegible for purging and can get destroyed for various reasons, leaving a destroyed page pointer in the inode's waitq 5. fstat returns and hits the destroyed page pointer causing a crash The fix is to all together disable cache hits when any page of the same inode is under validation. The otherwise cache hit will now be subjected to the ongoing validation by getting queued to the inode waitq. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* unify getdents count reduced to 512 (from 1024)Amar Tumballi2009-06-031-1/+1
| | | | | | | | | | | | Thanks to Krishna <krishna (at) gluster.com> for pointing this out. When a unify self-heal of large directory (directory with lot of entries) is done, the getdents_cbk used to fail because of new limit of buffer size (128KB). Noticed that earlier it used to streach upto 4MB, hence the value 1024 worked fine. By reducing it to 512, noticed, we can fit in well within 128KB limit, and hence unify self-heal goes through. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: Increase readdir block sizeShehjar Tikoo2009-06-031-1/+1
| | | | | | | | | | | | | | This improves the potential for pre-fetching a larger number of dirents. Consider that, with 255 chars as the max name length for each dirent, in the worst case scenario, where we actually have files with such large names, we're not getting more than 4 entries with the current block size of 1024. Generally also, increasing the size to 4k provides us with a higher chance that directories with low to medium number of dirents will be pre-fetched in a single readdir fop. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: Add dirent pre-fetching and cachingShehjar Tikoo2009-06-032-64/+215
| | | | | | | | | | | | | | The fop interface is such that we're able to extract more than 1 dirent in a readdir fop. This commit now enables libglusterfsclient to read multiple entries on a glusterfs_readdir call. Once these have been pre-fetched, they're cached till either glusterfs_closedir ,glusterfs_rewinddir or glusterfs_seekdir are called. The current implementation is beneficial for sequential directory reading and probably indifferent to applications that do a lot of seekdir and rewinddir after opening the directory. This is because both these calls result in dirent cache invalidation. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* booster: attr_timeout: Read timeout from booster fstabShehjar Tikoo2009-06-031-0/+17
| | | | | | | | | In order to expose the timeout values for stat and inode caching, this commit introduces a new fstab option "attr_timeout" that defines the number of seconds for which a looked up inode or a stat()'ed structure is valid in the cache. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: Simplify inode and stat cachingShehjar Tikoo2009-06-033-127/+94
| | | | | | | | | There is a mechanism for caching the inode numbers got from a lookup and a struct stat got from a stat or fstat but I wasnt sure if it worked. This commit simplifies cache updates and checks and the accompanying tests have made sure that the cache does work. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
* libglusterfsclient: Allocate right sized structureShehjar Tikoo2009-06-031-1/+1
| | | | Signed-off-by: Anand V. Avati <avati@dev.gluster.com>