Quick and dirty python script to check the dirty status of files in a GlusterFS brick
Published: Gluster F S Estimated reading time: ~1 minutes
This is a quick and dirty script I threw together to list files with dirty flags from a GlusterFS brick.
#!/bin/env python
#
# (C) 2011, Joe Julian
#
# License: GPLv2 http://www.gnu.org/licenses/gpl-2.0.html
#
import os,socket,xattr,sys,time
from stat import *
def scandirs(arg, dirname, fnames):
for fn in fnames:
filename = os.path.join(dirname,fn)
fmode = os.lstat(filename).st_mode
if S_ISREG(fmode) and os.path.getsize(filename) > 0:
try:
attributes = xattr.listxattr(filename)
status = [ xattr.getxattr(filename,x) for x in attributes if x.startswith("trusted.afr.") ]
if len([ x for x in status if not x == '\x00'*12]) > 0:
if S_IMODE(fmode) == 512:
os.remove(filename)
status = []
else:
time.sleep(0.2)
status = [ xattr.getxattr(filename,x) for x in attributes if x.startswith("trusted.afr.") ]
if len([ x for x in status if not x == '\x00'*12]) > 0:
for x in attributes:
if x.startswith("trusted.afr") and not xattr.getxattr(filename,x) == '\x00'*12:
print filename
print "\t%s=0x%s" % (x,"".join(["%02x" % ord(y) for y in list(xattr.getxattr(filename,x))]))
except:
status = ""
if not len(sys.argv) == 2:
print """Usage:
%s {brick directory}
""" % sys.argv[0]
else:
os.path.walk(sys.argv[1],scandirs, None)