| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
local->loc should be properly filled while creating a linkfile. otherwise
this causes the segfault in underlying volume layer (mostly client-protocol).
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Originally from Paul Rawson <plrca2@gmail.com>
http://patches.gluster.com/patch/391/ : patch re-submitted with patching guidelines.
cluster/distribute, and cluster/nufa uses new option PERCENT_OR_SIZET for its
option 'min-free-disk'.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
| |
the current msg is getting printed in warning level. Instead changed
it to debug, as the msg specific each node being full is already getting
printed in higher priority, hence this msg looks excessive.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
| |
This fix is needed in ha_statfs(), as the current code doesn't handle
the case of loc->inode being NULL, which is a valid case in statfs()
[Remember its stateless call]. This was causing 100% disk full logs in
distribute or nufa as the logic of checking whether the subvolumes have
enough disk space on them used to fail.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Thhie change removes a huge inefficiency in file open
path where every open resulted in dictionary operations
in order to let the client maintain a list of fd_t's being
used over a particular client context.
Resolves: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=16
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
| |
This commit reduces CPU usage of gf_fd_unused_get drastically by
making it O(1) instead of O(n).
Related to: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=16
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
| |
- wb_sync did not set local = NULL after stack_wind. It also used to free
local if its not NULL as part of cleanup process. Hence there was a double
free in STACK_DESTROY done in wb_sync_cbk.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
| |
Doing an lstat means init fails if the export directory
is a symlink pointing to a directory.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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.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>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
memory allocation for ra_file in open/create
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
- 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>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
This can happen when 'option export-statfs-size off' is given in
posix volume. Caused divide by 0 error.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It seems that use of mutexes is resulting in pretty high thread
sleep and wake-up cost. What is worse, if a worker thread has
acquired a lock, there is a possibility of the main glusterfs thread
being put to sleep. We change the use of mutexes into spinlock.
At the same time, we cannot anymore use condvars for notification since
the condvar interface depends on mutexes itself. Semaphores come to
out rescue. Luckily, even the pthread semaphores have a timedwait
interface to allow our idle worker threads to make an exit decision.
Further, it is possible that spinlocks are not available on all systems
so all this is curtained behind #defines so we can fall back to
mutexes and condvars implementation.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
| |
We've had complaints from users who've used
autoscaling option with default settings for min and
max threads, about high memory consumption because of
the large default value for max-threads.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit brings in support for allocation of iot_request_t's
in io-threads through the use of the mem-pool. We're hoping
that the overheads of hundreds and thousands of small allocations
can be avoided through this.
The important point to note is that the memory pool is not
for the translator as a whole but there is one small memory
pool for each worker thread. Not only does that help us
avoid malloc overheads for small allocations like iot_request_t
but also avoid contention on the heap data structures when multiple
threads want an iot_request_t from the pool.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
| |
When mandatory locks are enabled and a read/write
would block due to a lock and if the fd is opened
with O_NONBLOCK, return EAGAIN (previously EWOULDBLOCK).
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
|
|
| |
- memory corruption was due to new members being added between allocation
of buffer for serializing xattr_req dictionary and dict_serialize of
xattr_req.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
| |
Edited by avati: make the function signature of fuse_xattr_reply_buf() use 'const char *value' instead of 'char *value'
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
|
| |
This change is needed as the format of how the /etc/mtab entry of glusterfs
mount looks is now changed.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|