Was getting:
./osdc/ObjectCacher.h:169:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
uint64_t overlap_start = MAX(start, ex.start);
^
./osdc/ObjectCacher.h:170:59: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
uint64_t overlap_end = MIN(end, ex.start + ex.length);
^
Signed-off-by: Adam Crume <adamcrume@gmail.com>
Otherwise we may end up requesting the osdmon to propose while it is
mid-proposal. We can't simply return EAGAIN to the user either because
then we would have to expect the user to be able to successfully race
with the whole cluster in finding a window in which 'mds fs new' command
would succeed -- which is not a realistic expectation. Having the
command to osdmon()->wait_for_writable() guarantees that the command
will be added to a queue and that we will, eventually, tend to it.
Fixes: #9794
Signed-off-by: Joao Eduardo Luis <joao@redhat.com>
We can more easily differentiate between errors we get out of this
function, which makes the code a bit more versatile and readable.
Signed-off-by: Joao Eduardo Luis <joao@redhat.com>
Returning -EINVAL on a function that expects bool and the error code to
be in a variable 'r' can only achieve one thing: if this path is ever
touched, instead of returning an error as it was supposed to, we're
returning 'true' with 'r = 0' and, for no apparent reason, the user will
think everything went smoothly but with no new fs created.
Signed-off-by: Joao Eduardo Luis <joao@redhat.com>
We should not allow ourselves to request the osdmon to propose before we
know for sure that we meet the required conditions to go through with
our own state change. Even if we still can't guarantee that our
proposal is going to be committed, we shouldn't just change the osdmon's
state just because we can. This way, at least, we make sure that our
checks hold up before doing anything with side-effects.
Signed-off-by: Joao Eduardo Luis <joao@redhat.com>
We were just setting return code to -EINVAL, while allowing the logic to
continue regardless. If we are to return error, then we should abort
the operation as well and let the user know it went wrong instead of
continuing as if nothing had happened.
Signed-off-by: Joao Eduardo Luis <joao@redhat.com>
test/bufferlist.cc: In member function ‘virtual void
Buffer_constructors_Test::TestBody()’:
test/bufferlist.cc:154:36: warning: ignoring return value of ‘int
system(const char*)’, declared with attribute warn_unused_result
[-Wunused-result]
::system("echo ABC > testfile");
^
test/bufferlist.cc: In member function ‘virtual void
TestRawPipe::SetUp()’:
test/bufferlist.cc:182:36: warning: ignoring return value of ‘int
system(const char*)’, declared with attribute warn_unused_result
[-Wunused-result]
::system("echo ABC > testfile");
^
test/bufferlist.cc: In member function ‘virtual void
BufferList_read_file_Test::TestBody()’:
test/bufferlist.cc:1768:53: warning: ignoring return value of ‘int
system(const char*)’, declared with attribute warn_unused_result
[-Wunused-result]
::system("echo ABC > testfile ; chmod 0 testfile");
^
test/bufferlist.cc:1770:32: warning: ignoring return value of ‘int
system(const char*)’, declared with attribute warn_unused_result
[-Wunused-result]
::system("chmod +r testfile");
^
test/bufferlist.cc: In member function ‘virtual void
BufferList_read_fd_Test::TestBody()’:
test/bufferlist.cc:1781:34: warning: ignoring return value of ‘int
system(const char*)’, declared with attribute warn_unused_result
[-Wunused-result]
::system("echo ABC > testfile");
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
librbd/internal.cc: In function 'void
librbd::readahead(librbd::ImageCtx*, const std::vector<std::pair<long
unsigned int, long unsigned int> >&, const md_config_t*)':
librbd/internal.cc:3150:38: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
ictx->total_bytes_read > conf->rbd_readahead_disable_after_bytes;
^
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
Wip client flock
Add support for file locking to the userspace client, and improve blocked-lock cancellation so that it doesn't remove locks that succeeded when racing.
Reviewed-by: Greg Farnum <greg@inktank.com>
The synopsis is:
osd crush rename-bucket name1 name2
It is made idempotent by interpreting -EALREADY as returned by
CrushWrapper::rename_bucket return as success.
The crush_rename_bucket method first checks for errors with
CrushWrapper::can_rename_bucket if there is no pending crush so that it
can return early and avoid the creation of a pending crush map.
If renaming is possible, CrushWrapper::rename_bucket is called on the
pending crush map (and creates it indirectly if it does not already
exists).
http://tracker.ceph.com/issues/9526Fixes: #9526
Signed-off-by: Loic Dachary <loic-201408@dachary.org>
Rename a bucket and return -ENOTDIR if trying to rename an item. The
behavior is otherwise the same as rename_item and can_rename_item.
Signed-off-by: Loic Dachary <loic-201408@dachary.org>
The can_rename_item is a const method checking if renaming an item could
succeed. If not it returns a unique -errno code and a human readable
message message.
Trying to rename a non existent item into an existent item returns
-EALREADY which can be treated as success if renaming is to be
idempotent.
Signed-off-by: Loic Dachary <loic-201408@dachary.org>
A number of CrushWrapper get methods or predicates were not const
because they need to maintain transparently the rmaps. Make the rmaps
mutable and update the constness of the methods to match what the caller
would expect.
Signed-off-by: Loic Dachary <loic-201408@dachary.org>
Several methods were missing docstrings, preventing the methods
from appearing in the generated documentation. Ensured all methods
now have appropriate docstrings.
Fixes: 5977
Signed-off-by: Jason Dillaman <dillaman@redhat.com>