| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 288 (volgen script failed initial tests due to wrong fd definition)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=288
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
create, mkdir, symlink, mknod: Prefer to return itransform'd inode number
from the first_up_child. If not, fall back on any other child that returned
succcess.
link, rename: Return the same inode number that
was passed as part of loc_t.
Also adds a new member to afr_local_t, local->first_up_child
which is initialized at the start of the transaction. This
fixes the race where a subvolume might go down during the transaction
and thus have the first_up_child change.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 285 ("first up child" can change during a transaction)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=285
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- some of the iobufs in pool will be cached by io-cache and hence refcount
will not be zero. Hence the assertion of ref being zero in
__iobuf_arena_destroy fails. Commenting out iobuf_pool_destroy during fini, till
we introduce proper cleanup in all translators, thereby allowing io-cache
to release the buffers it has held.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 283 (booster aborts complaining the refcount of iobuf is not zero during glusterfs_umount_all.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=283
|
|
|
|
|
|
|
|
|
|
|
|
| |
mounted.
- the vmplist.list is inited only during mounting of first entry. Hence doing
a list traversal when no vmpentries are present, results in a segfault.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 282 (segfault of applications using booster observed when the application does not mount any vmps.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=282
|
|
|
|
|
|
| |
http://gluster.com/community/documentation/index.php/Glusterfs-volgen_Reference_Page
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 260 (ls on booster VMP results in error: "File descriptor in bad state")
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=260
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 260 (ls on booster VMP results in error: "File descriptor in bad state")
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=260
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 4 (mount --bind fails if run immediately after mounting GlusterFS)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=4
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 279 (File written with booster results in self-heal after dd exits)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=279
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 210 (libglusterfsclient: Enhance logging)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=210
|
|
|
|
|
|
|
|
|
|
|
|
| |
This ensures that the process using libglusterfsclient does
not exit before all the fops and calls have been replied to.
It helps to ensure that the backends are in a sane state when
the program exits.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 279 (File written with booster results in self-heal after dd exits)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=279
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch cleans up the umount and fini paths in preparation
to support waiting for unwind of all pending call frames.
Two misc fixes are:
1. Fix to avoid deadlock in _libgf_umount by
using _libgf_vmp_search_entry instead of
libgf_vmp_search_exact_entry since the latter tries to take a
lock already help by _libgf_umount.
2. Avoid a crash in _libgf_umount by deleting the vmp
entry from the list before it gets freed.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 279 (File written with booster results in self-heal after dd exits)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=279
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 279 (File written with booster results in self-heal after dd exits)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=279
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 210 (libglusterfsclient: Enhance logging)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=210
|
|
|
|
|
|
|
|
|
|
|
| |
Internal users feel the amount of logging brought in
due to a previous logging enhancement patch is a bit too
aggressive for DEBUG, so this changes it to TRACE.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 210 (libglusterfsclient: Enhance logging)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=210
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the root inode's is outdated, send a revalidate on it.
A revalidate on root inode also reduces the window in which an
op will fail over distribute because the layout of the root
directory did not get constructed when we sent the lookup on
root in glusterfs_init. That can happen when not all children of a
distribute volume were up at the time of glusterfs_init.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 256 (revalidates should be sent on '/' in libglusterfsclient.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=256
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
request->stub->fop.
- for non-write wind requests, the request structure outlives the stub.
The call stub is destroyed when stack is wound but request is destroyed
only when the reply has come.
(for writes, both stub and request are destroyed when refcount becomes 0,
which happens only when the write operation is stack unwound and a reply
for the write operation has come from underlying translators, for non-write
unwind requests the request is first destroyed before resuming the stub).
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 280 (simple stripe, with write-behind set up, when dbench is run client crashes.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=280
|
|
|
|
|
|
|
|
|
| |
from the kernel
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 223 (flush not sent)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=223
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 4 (mount --bind fails if run immediately after mounting GlusterFS)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=4
|
|
|
|
|
|
|
|
|
|
| |
- this helps us to not traverse the request list whenever we need currently
aggregated data in the queue
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
| |
- this would increase the performance since we don't have to traverse the
request list every time we need the current window size.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
| |
- request structure now holds a member write_size which is initialised at the
time of request creation and used later.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 277 (running dd on booster returns EINVAL)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=277
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- With this option enabled, writes are stack-wound even though not enough
data is aggregated, provided there are no write-requests which are
stack-wound but reply is yet to come. The reason behind this option
is to make use of the network, which is relatively free (with no writes
or replies in transit). However, with non-standard block-sizes of writes
the performance can actually degrade. Hence making this configurable.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- move all the decision making code to __wb_can_wind.
- don't continue traversing the request list, once we know any of the
following conditions are true:
* requests other than write are present in queue.
* writes are happening at non-contiguous offsets.
* there are no write requests, which are wound to server but not yet
received the reply.
* enough data is aggregated for writing.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
| |
- don't traverse entire request list to get the window-size, instead break when current
window size becomes greater than configured limit.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
|
|
| |
the wind list in wb_sync.
- no need of getting the total_count of number of requests in the list.
Even if there is a single request, we need to sync it.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
| |
single iobuf.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- remove wb_mark_wind_aggregegate_size_aware, since wb_mark_wind_all does
the same work (with check for whether current aggregated data size is
greater than the configured limit before calling it). Moreover,
wb_mark_wind_aggregate_size_aware called __wb_get_aggregate_size
redundantly, thereby reducing the performance, since for small
sized large number of writes, traversing the list of requests takes
significant amount of time.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 275 (libglusterfsclient: Generic build failure bug for libglusterfsclient and booster)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=275
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 275 (libglusterfsclient: Generic build failure bug for libglusterfsclient and booster)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=275
|
|
|
|
|
|
|
|
|
|
| |
- An extra vector was being allocated when the number of bytes being read
from cache were equal to the iobuf size.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 274 (Memory corruption in Apache running on booster)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=274
|
|
|
|
|
|
|
|
|
|
|
| |
- qr_lookup not to send request for file-content if the cache is already
present during revalidates.
- flush the cache in qr_lookup_cbk if the cache is not in sync with the file.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 273 (Code review and optimize quick-read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=273
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 273 (Code review and optimize quick-read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=273
|
|
|
|
|
|
|
|
|
| |
if not present should be atomic.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 273 (Code review and optimize quick-read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=273
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- a new size has to be set in xattr_req only
if (quick-read is configured with a maximum file size limit
&& ((xattr_req does not have a request key for getting content)
|| (the size requested in xattr_req is not equal to configured
size in quick-read)))
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 273 (Code review and optimize quick-read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=273
|
|
|
|
|
|
|
|
|
|
| |
- A global context pointer cannot be used with libglusterfsclient, since
there can be many contexts in a single process.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 271 (applications using booster protocol/client crash in client_setvolume_cbk.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=271
|
|
|
|
|
|
|
|
|
| |
opened on directories.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 260 (ls on booster VMP results in error: "File descriptor in bad state")
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=260
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- In protocol/client, fdctx is accessed by two sets of procedures,
protocol_client_mark_fd_bad falls in one set whereas the other set consists of
all fops which receive fd as an argument. The way these fdctxs are got is
different in these two sets. While in the former set, fdctx is accessed
through conf->saved_fds, which is a list of fdctxs of fds representing
opened/created files. In the latter set, fdctxs are got directly from fd
through fd_ctx_get(). Now there can be race conditions between two threads
executing one procedure from these two sets. As an example let us consider
following scenario:
A flush operation is timed out and polling thread executing
protocol_client_mark_fd_bad, fuse thread executing client_release. This can
happen because, immediately a reply for flush is written to fuse, a release on
the same fd can be sent to glusterfs and the polling thread still might be
doing cleanup. Consider following set of events:
1. fuse thread does fd_ctx_get (fd).
2. polling thread gets the same fdctx but through conf->saved_fds.
3. Now both threads go ahead and does list_del (fdctx) and eventually free
fdctx.
In other situations the same set events might occur and the threads
executing fops other than flush in the second set might be accessing a
fdctx freed in protocol_client_mark_fd_bad.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 127 (race-condition in accessing fdctx in protocol/client)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=127
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
glusterfs_get_ctx
- since glusterfs_get_ctx gets the global context pointer, there can be
problems in a multithreaded application running on libglusterfsclient
doing multiple glusterfs_inits. Hence use context specific to the
current xlator tree stored in each xlator object.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 240 (segmentation fault in qr_readv)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=240
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
patch http://patches.gluster.com/patch/1319/ breaks when no priority
is mentioned in the config. the patch makes ioc_get_priority() return
1 as the value when no priority is given, but ioc_get_priority_list()
was still returning 0 as the max_pri (maximum priority) which would
result in lru list heads not getting initialized
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 261 (support for disabling caching of certain files)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=261
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- nm on libglusterfs-booster.so shows only creat64 defined but not creat. This
behavior is observed due to following reasons.
1. Booster is compiled with _FILE_OFFSET_BITS=64.
2. fcntl.h when included with _FILE_OFFSET_BITS=64 defined, renames all
occurences of creat to creat64 in the source code from the point of
#include <fcntl.h>.
fcntl.h should be included since booster.c uses many of the macros defined in
that header and glusterfs (booster in turn) has to be compiled with
_FILE_OFFSET_BITS=64 since glusterfs uses datatypes (off_t, stat etc) whose
sizes vary depending on whether this macro is defined or not. Basically, this
macro should be defined to provide portability across 32 and 64 bit
architectures.
The correct fix is to make glusterfs to use datatypes big enough to hold 64 bit
variants as well as 32 bit variants (like int64_t replacing off_t) and not to
define _FILE_OFFSET_BITS=64 at all.
As a temporary work around,
1. we can implement creat functionality in a function with different name, say
booster_false_creat
2. rename this function to creat using __REDIRECT macro. since this renaming
happens after renaming of creat to creat64 (from the first __REDIRECT macro
in fcntl.h), we will end up with creat symbol being defined in
libglusterfs-booster.so
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 264 (creat is not resolved properly to the symbol defined in booster)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=264
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 263 (files are not resolved to glusterfs when vmp is not terminated with a '/'.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=263
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 262 (crash in booster close due to invalid conversion specifier during logging.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=262
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Hello all,
here is a small feature patch. Its intention is to give the user more control
over the files performance/io-cache really caches. If the user knows exactly
which files should be cached and which shouldn't there is currently no way to
tell glusterfs _not_ to cache certain pattern. This patch allows you to
disable caching by setting the priority of a pattern to "0". If you do not
give any priority option it works just like before and caches everything.
Honestly I am not totally sure that disabling caching works the way we did it,
please comment.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 261 (support for disabling caching of certain files)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=261
|
|
|
|
|
|
|
|
|
|
| |
- when export directory is configured to span across multiple mountpoints,
the inode number has to be transformed in order to make it unique.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 254 (storage/posix has to do inode number transformation wherever it unwinds with a stat structure)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=254
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This tool allows us to check the sanity of the LD_PRELOAD
mechanism so that we can be sure that an application's syscalls
will be redirected into booster when that library is LD_PRELOADed.
In case of failed syscalls, this tool should be run first
to see if the calls are redirected as required.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 251 (Improve booster debugging through ld-preload testing tool)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=251
|
|
|
|
|
|
|
|
|
|
|
| |
accepting client connections.
- This bug used to cause a memory leak of 2 * sizeof(ib_verbs_private_t) for each new client connection.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 259 (Memory leak on server side when there are large number of disconnections from clients)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=259
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 238 (Backport quick-read to 2.0 release)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=238
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 257 (Backport stat-prefetch to 2.0)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=257
|