| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
fail revalidate calls if inoode number has changed for the basename at the server side. This is a temporary workaround for most of the cases till inode-gen is merged
Avati
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 112 (parallel deletion of files mounted by different clients on the same back-end hangs and/or does not completely delete)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=112
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
| |
oldloc.parent is NULL.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 215 (crash on ib-verbs in 2.0.6-rc4)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=215
|
|
|
|
|
|
|
|
|
|
|
| |
when there are no servers available to client, and transport init is
not successful, send 'connecting' event once to parent so it doesn't
hand in there.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 224 (Client hangs if none of the servers are up)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=224
|
|
|
|
|
|
| |
not found, the server crashes.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As of now, if a frame submit fails on server, there are no logs,
and clients will have missing frames (which leads to 'hangs').
Supporting situation like this very tricky without proper log
messages. As a step to make our log message lean and meaningful,
this log is important.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 190 (missing frames due to larger reply message size.. (ib-verbs))
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=190
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In client_open_cbk, client_opendir_cbk the list_add_tail macros were invoked with wrong
ordered arguments, causing the existing registered fd list to get unlinked from the
saved_fds list. The effects of this is far fetched - when transport disconnects, open
fds are no more marked bad as they are not reachable from the saved_fds list. After
reconnection, resumed access on this fd causes reference to invalid fds on the server.
It could appear in the form of 'unresolved fd' error, readdir happening on a file fd,
files reading from other files, etc.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 192 (sefault in posix-readdir)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=192
BUG: 126 (Immediate segfault when used for rootfs)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=126
BUG: 173 ([ glusterfs 2.0.6rc1 ] - "server SEG fault")
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=173
BUG: 194 (Apache+Booster results in inconsistent download size using wget)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=194
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the previous commit, the path info was removed to prevent the
segfault, which instead could have been provided from request
header directly. More specific information is required for debugging,
and hence adding the path log.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 189 (segfault in server-lookup)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=189
|
|
|
|
|
|
|
|
|
|
|
|
| |
When 'dict_unserialize' failed, the log message was trying to
print 'state->loc.path' and 'state->ino', which gets filled in
later stages in flow. Caused segmentation fault when there was
a failure.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 189 (segfault in server-lookup)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=189
|
|
|
|
|
|
|
|
|
|
|
|
| |
to continue with 'hashed' inode, even if inode_path() on the inode
fails. This will is needed for few lock operations, to unlock the
lock held on inode. (ie, it fixes 'rm -rf *' hang issue, seen from
multiple clients).
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 112 (parallel deletion of files mounted by different clients on the same back-end hangs and/or does not completely delete)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=112
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
inodelk().
entrylk() and inodelk() should try to update loc->parent only if parent is not-NULL.
because it is not an error to have loc->parent == NULL for entrylk() and inodelk()
operations.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 162 (Replication segfaults with many nodes)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=162
|
|
|
|
|
|
|
|
|
|
|
|
| |
the lock operation on entry or inode is going to happen on only one
inode, and it doesn't need dentry (with info on parent) for the
lock operation to complete. Hence, in server_{inode,entry}lk() calls
after server_loc_fill, we -should not- be checking for parent inode.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 112 (parallel deletion of files mounted by different clients on the same back-end hangs and/or does not completely delete)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=112
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
| |
integer typecast warnings fixed
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
| |
- though the previous commit fixes bug #29, this patch fixes bugs
arising in similar situations where xattrop is initiated by
xlators other than afr.
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>
|
|
|
|
|
|
|
| |
I noticed that there were some minor spelling mistakes/typos in some
of the source files. This patch fixes the ones I've found.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
| |
This patch is a step towards giving compatibility between the versions of
GlusterFS. Now onwards, the protocol-version won't depend on release
versions. In general, multiple glusterfs versions can have common
protocol-version.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
| |
Ref: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=35
The check done earlier was not handling the case when a 'op' is == MAX_VALUE (which
is not defined), and used to skip to the next array (like gf_mops[MAX] == gf_cbks[0])
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
| |
With this patch, one can fetch any volumefile which is not pre-defined in
volume file with 'option' in server protocol volume, instead clients can
fetch the volume files based on the key name itself [From the confdir only]
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>
|
|
|
|
|
|
|
|
| |
- 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>
|
| |
|
| |
|
|
|
|
|
|
| |
This patch makes the server pass back the transport pointer of the client. If the UUID matches, the client makes the local transport 'shortcut' with the remote transport (pointer received from server)
The shortcut simulates a socket queue. Instead of serialized messages going over the network and getting queued in the tcp socket queue, the messages get queued in a transport specific queue picked by a polling thread.
|
| |
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
| |
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
| |
|
|
|
|
|
|
| |
guard server_writev from 0-byte writes from client where iobuf will be NULL. This is possible only via libglusterfsclient (not fuse)
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
steps:
- server_finodelk uses req->volume pointer into state->volume
- finodelk is queued by locks translator
- c call returns from server_pollin and hdr is FREE'd
- now state->volname is pointing to FREE'ed region (junk)
- server_finodelk_cbk calls gf_add_locker
- gf_add_locker remembers lock with junked path along with fd_ref
- gf_del_locker from new server_finodelk cannot string match with junked volume thus
lock is not deleted, hence fd_ref remains as a leak
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
| |
from transport_connect() was EINPROGRES
This bug was racing between a CHILD_UP from poll thread resulting from the event_register() of the new socket called in fuse thread. CHILD_UP would sometimes overtake the CHILD_DOWN for EINPROGRESS. So replicate would receive CHILD_DOWN as the latest event. This resulted in self-heal not happening etc.
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
| |
also, during lookup_cbk().
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
| |
to retrieve remote inode number from loc->inode's context.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
| |
- logging made more relevent.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
|
|
|
|
| |
the fop level itself.
they used to log ambiguously
and was of no use. logging is now more precise and will help in debugging,
in case of errors.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
| |
handles this case
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
|
| |
in server volume define, "option verify-volfile-checksum no" to disable
the checksum feature.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
| |
- first phase, which happens when POLLERR is received on transport,
releases all locks, flushes all open fds.
- second phase, which happens when both the transports of connection destroyed,
destroys the containers like lock table, fd table along with the connection.
- the first phase, clears up any references to transport held by translators
like posix-locks(in the form of blocked locks) paving way for the second phase.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|