[Gluster-Maintainers] Improve robustness by checking result of pthread_mutex_lock()

Shyam srangana at redhat.com
Mon Aug 29 18:41:40 UTC 2016


On 08/28/2016 07:14 AM, Niels de Vos wrote:
> Hi,
>
> While working on some code, I notices that there are quite some calls to
> pthread_mutex_lock() that do not check for the return value. There might
> be cases where obtaining the lock fails, and in many cases this would
> just be ignored. Needless to say, this might cause incorrect updates to
> the data structures that the pthread_mutex intends to prevent.
>
> I have filed https://bugzilla.redhat.com/1370921 for this issue, but may
> add more dependent bugs for different components. What do other
> maintainers prefer to use for tracking corrections like this?

Short answer: a bug report

Long answer: A bug is most favorable, so that when considering backlog 
for a component, such changes are also seen and prioritized. I would 
like a bug for everything that we see needs an improvement to an actual 
problem-fix, so that we can consider them in totality.

In this case a bug does suit the needs.

In possibly some cases, where it is an improvement that is not 
necessarily a bug, I would like to post this in a wish list of sorts for 
the component (or the entire project). Primarily not a bug report, 
because in any bug backlog clearing activity I do not want these closed 
as not a bug or some such.

Such a wishlist is possibly a trello backlog board/list, with an easier 
update+view for all community members (rather than actually visiting 
Trello if possible). This is not a part of this discussion I believe, so 
feel free to ignore this for the moment if you choose to.

>
> Thanks,
> Niels
>
>
>     $ git grep pthread_mutex_lock '*.[ch]' \
>         | grep -v '= pthread_mutex_lock' | cut -d : -f 1 | uniq -c \
>         | sort -rn
>      28 xlators/features/locks/src/posix.c
>      27 rpc/rpc-lib/src/rpc-clnt.c
>      23 rpc/rpc-transport/rdma/src/rdma.c
>      19 rpc/rpc-transport/socket/src/socket.c
>      19 libglusterfs/src/logging.c
>      19 libglusterfs/src/inode.c
>      16 xlators/features/bit-rot/src/bitd/bit-rot-scrub.c
>      16 xlators/features/bit-rot/src/bitd/bit-rot.c
>      15 libglusterfs/src/syncop.c
>      14 xlators/mount/fuse/src/fuse-bridge.c
>      14 rpc/rpc-lib/src/rpcsvc.c
>      13 xlators/features/locks/src/entrylk.c
>      11 xlators/features/leases/src/leases-internal.c
>      11 xlators/cluster/dht/src/tier.c
>      10 xlators/features/locks/src/inodelk.c
>       8 xlators/protocol/client/src/client.c
>       8 libglusterfs/src/fd.c
>       8 libglusterfs/src/event-epoll.c
>       7 xlators/protocol/client/src/client-handshake.c
>       7 xlators/cluster/dht/src/dht-rebalance.c
>       7 libglusterfs/src/event-poll.c
>       6 xlators/protocol/server/src/server.c
>       6 xlators/protocol/client/src/client-lk.c
>       6 libglusterfs/src/iobuf.c
>       5 xlators/features/upcall/src/upcall-internal.c
>       5 xlators/features/locks/src/reservelk.c
>       5 xlators/features/locks/src/common.c
>       5 xlators/features/locks/src/clear.c
>       5 xlators/features/changelog/lib/src/gf-changelog-reborp.c
>       5 rpc/rpc-lib/src/rpc-clnt-ping.c
>       4 xlators/protocol/client/src/client-rpc-fops.c
>       4 xlators/performance/io-threads/src/io-threads.c
>       4 xlators/performance/io-cache/src/io-cache.h
>       4 xlators/mgmt/glusterd/src/glusterd.c
>       4 xlators/features/bit-rot/src/bitd/bit-rot-scrub-status.c
>       4 xlators/cluster/ec/src/ec-heald.c
>       4 xlators/cluster/afr/src/afr-self-heald.c
>       4 libglusterfs/src/syncop-utils.c
>       4 cli/src/cli-cmd.c
>       4 api/src/glfs.c
>       3 xlators/storage/posix/src/posix.c
>       3 xlators/performance/read-ahead/src/read-ahead.h
>       3 xlators/mgmt/glusterd/src/glusterd-utils.c
>       3 xlators/features/protect/src/prot_dht.c
>       3 xlators/features/changelog/src/changelog-helpers.c
>       3 tools/gfind_missing_files/gcrawler.c
>       3 libglusterfs/src/event.c
>       3 libglusterfs/src/circ-buff.c
>       3 api/src/glfs-resolve.c
>       3 api/src/glfs-mgmt.c
>       3 api/src/glfs-master.c
>       3 api/src/glfs-handleops.c
>       3 api/src/glfs-fops.c
>       2 xlators/storage/posix/src/posix-helpers.c
>       2 xlators/mount/fuse/src/fuse-helpers.c
>       2 xlators/mgmt/glusterd/src/glusterd-syncop.c
>       2 xlators/mgmt/glusterd/src/glusterd-statedump.c
>       2 xlators/mgmt/glusterd/src/glusterd-mgmt.c
>       2 xlators/mgmt/glusterd/src/glusterd-hooks.c
>       2 xlators/features/index/src/index.c
>       2 xlators/features/changelog/src/changelog-ev-handle.c
>       2 xlators/features/changelog/lib/src/gf-changelog-journal-handler.c
>       2 xlators/features/bit-rot/src/stub/bit-rot-stub-helpers.c
>       2 xlators/features/bit-rot/src/stub/bit-rot-stub.c
>       2 xlators/experimental/fdl/src/fdl-tmpl.c
>       2 rpc/rpc-lib/src/rpc-transport.c
>       2 libglusterfs/src/throttle-tbf.c
>       2 libglusterfs/src/syncop.h
>       2 libglusterfs/src/rot-buffs.c
>       2 libglusterfs/src/locking.h
>       1 xlators/protocol/server/src/server-helpers.c
>       1 xlators/protocol/client/src/client-helpers.c
>       1 xlators/nfs/server/src/nfs-fops.c
>       1 xlators/features/trash/src/trash.c
>       1 xlators/features/leases/src/leases.h
>       1 xlators/features/changelog/lib/src/gf-changelog.c
>       1 xlators/cluster/dht/src/dht-shared.c
>       1 xlators/cluster/afr/src/afr-transaction.c
>       1 libglusterfs/src/statedump.c
>       1 extras/benchmarking/rdd.c
>       1 api/src/glfs-internal.h
>
>
>
> _______________________________________________
> maintainers mailing list
> maintainers at gluster.org
> http://www.gluster.org/mailman/listinfo/maintainers
>


More information about the maintainers mailing list