| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| | |
upstream_on_quota
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Details:
--------
In init, we should create an rpc only when quota is enabled
on the volume.
In reconfigure, we should reuse the enforcer rpc, if any, on
enable. On disable, we should disable the enforcer rpc, if present.
Change-Id: I03e9f7b2b6dfecd1e8d97f0fb2df3db717e4ad50
Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
|
| |
| |
| |
| |
| |
| |
| | |
Change-Id: Ib903ec47739a80168981b3c38ef6ea36ca3ab29a
BUG: 969461
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Signed-off-by: Varun Shastry <vshastry@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Also collect the return value of readlink in a signed entity intead
of an unsigned entity, in which case failures cannot be detected.
Change-Id: Ia73b97c15a1e9be518193fd57598e7c6eadca05c
BUG: 969461
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Signed-off-by: Varun Shastry <vshastry@redhat.com>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit makes the following changes to the source.
i. Updating hard link count for parent dir should be configurable. Starts
working only when the quota is enabled.
ii. Heal nlinks of pgfid xattr in lookup.
iii. Start quota crawler without readdirp optimization.
iv. Rename: Handle the internal fops properly. Use GLUSTERFS_INTERNAL_FOP_KEY
for representing the internal fops.
Change-Id: Ic6586a82a8bb6eb4329eb6cbd5430da11418e753
BUG: 969461
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Signed-off-by: Varun Shastry <vshastry@redhat.com>
|
|\
| |
| |
| | |
upstream_on_quota
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The code adjusts the statvfs values if the quota-deem-statfs option is enabled.
i. Adjust statvfs based on limit configured on root.
ii. If limit is set on the inode passed, use size/limits on that inode to
populate statvfs. Otherwise, use size/limits configured on root.
iii. Upon statvfs, update the ctx->size on the inode.
iv. Don't let DHT aggregate, instead take the maximum of the usages from the
subvols of the DHT, since each of it contains the complete information.
Change-Id: Id43c5432be56b70c22c040a9b7f674ddddc9f930
BUG: 969461
Signed-off-by: Varun Shastry <vshastry@redhat.com>
|
|\ \
| | |
| | |
| | | |
contribution node creation for root" into upstream_on_quota
|
| |/
| |
| |
| |
| |
| |
| |
| | |
contribution node creation for root
Change-Id: I201a6dddab2258ae3f536281bb0fd17040d8c54e
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit 34ffc3b71ad96b9be6fa34cad44f92eceb56f5e7.
Reverting this patch because quota command in glusterd only
reads (but NOT modify) the op-version and therefore can never
bump up the op-version of the cluster. As of today, that kind of
intelligence rests only with 'volume set' operation.
Hence 'volume set' interface is going to be used in the post upgrade
script to explicitly trigger an increment in the cluster's op-version.
Change-Id: Id38bbc044429ebb1349772f37b637925032618bc
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|\ \
| | |
| | |
| | | |
upstream_on_quota
|
| |/
| |
| |
| |
| | |
Change-Id: If9ae015ab189f57f3a3f9a56cbb38a5e8491fe6f
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
This is to set default-soft-limit as a way of bumping up
the op-version, as part of post-upgrade script before
setting limits.
Change-Id: I6693bf6a6d7f761c55f83120cf686ffa0951bd50
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|/
|
|
|
| |
Change-Id: I08f919e0bf3f014c553070dbd7710ba5db9fd2b4
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Current code compared only the first strlen (xlator_name) characters
with volume_uuid. This can result in picking up a wrong subvol which
has the first strlen (xlator_name) characters same as volume_uuid.
Change-Id: I81bf251c0603ccfe2bd60b75d2e040f13b135669
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This patch addresses the issues we might run into in the time-window
between crawler starts to build quota state and the crawler actually
reaches the inode. In this time-window, quota is enabled but context
of the inode in question is not populated.
Change-Id: I10ba66d9aa3680e6c46f8f599e77fc39cc9601c5
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
|
|
|
|
|
|
| |
Original-author: Krishnan Parthasarathi <kparthas@redhat.com>
Change-Id: I0a68cb52f6d97da91782120af04b8dacb0c9ccc5
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|
|
|
|
|
|
| |
Original-author: Krishnan Parthasarathi <kparthas@redhat.com>
Change-Id: I07d7f01af597cbec836972fd06076dcee82eff7d
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the function _gd_syncop_stage_op_cbk (), aggregate rsp dicts
only during REPLACE_BRICK and QUOTA commands.
Similarly, in the function _gd_syncop_stage_op_cbk (), aggregate the
rsp dict from the peers only for quota sub-command 'list' and for
all other commands unconditionally.
This is the cause of the log messages seen in the bug 1001432.
Also, read interim 'count' from op_ctx before aggregating it with
rsp_dict_count
Change-Id: I9ecb832e83354d62a8f841db2ce6b2377920abad
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|
|
|
|
|
|
| |
... and also remove auxiliary mount, if it exists.
Change-Id: I91ac3f434df3e03ea914051d1d6890e7a05a3cad
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|
|
|
|
|
|
| |
Original-author: Krishnan Parthasarathi <kparthas@redhat.com>
Change-Id: Iff4ea98276ffdba5b39cadceff63739107eafd77
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
.. and use quota checksum and version to validate one's own quota store
config
cli: cleanup quota-list-all implementation
Also,
change the format in which we store the directory quota configurations.
We store the list of gfids as 16 byte unsigned chars, in binary mode.
Original-author: Krishnan Parthasarathi <kparthas@redhat.com>
glusterd: Store quota checksum and version in quota.cksum
Quota version is incremented AND quota checksum is computed everytime
quota.conf is modified.
The checksum and versions are also retrieved
from store into memory whenever glusterd is restarted.
glusterd: Unlink quota.conf and quota.cksum on quota disable
Also destroy volinfo->quota_conf_shandle and reset it to NULL,
and reset volinfo->quota_conf_version to 0 in memory.
Change-Id: Ie71da3a75bc80e1ffddf4f2e38a99a48ad4de164
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|
|
|
|
|
|
|
|
| |
also fix FILE* leak in cli
Original-author: Krishnan Parthasarathi <kparthas@redhat.com>
Change-Id: Icb9b58ef065ce1a150d98b4c26bbcddeeb390e44
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|
|
|
|
|
|
| |
Original-author: Krishnan Parthasarathi <kparthas@redhat.com>
Change-Id: I07797fb5402dba89f81a7d2b8b20a11db74f69c9
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As part of volume-quota-list command implementation, the gluster cli
process makes an RPC to quotad, querying for quota related information
of a gfid in a volume. Prior to this patch, we used the volume-id for
quotad to uniquely identify a volume.
Since cli doesn't have a way (today) to fetch the volume-id for a given
volname, we had to use a (nearly) unique key to identify a volume"
Original-author: Krishnan Parthasarathi <kparthas@redhat.com>
Change-Id: I49b66f46fc7bb8dc4075cc855a1d854166d0e89c
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
|\
| |
| |
| | |
upstream_on_quota
|
| |
| |
| |
| |
| | |
Change-Id: Ibe7de155bb5be21ab2da2beed75eec86e9a2f001
Signed-off-by: Varun Shastry <vshastry@redhat.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I60f93727f04f1d16edfc7efdcb4e1c501ec760fa
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For correct functioning of marker we need a parent/pargfid.
Change-Id: Ie1a0fb3a5b9b12091e1ea749cbf15342a5f933db
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/11947
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Vijay Bellur <vbellur@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Its valid that directories on which limit is not set, to not have
inode ctx NULL, since it servers no purpose.
Change-Id: I0e31de7ffbfcb65cddf590833756ff11bab64434
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/11830
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Vijay Bellur <vbellur@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch also fixes a potential race-condition while accessing
dentry list stored in inode context while updating size and enforcing
limits.
Change-Id: I76c85fe782f6a53d74b453dd7dcb893e33003620
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We used to calculate delta as,
delta = (postbuf->ia_blocks - prebuf->ia_blocks) * 512;
However this can result in some blocks getting accounted twice in a
multithreaded environment. This is because at storage/posix, we dont
do,
* stat (file, &prebuf)
* write ()
* stat (file, &postbuf)
as a single atomic operation. So, stat in step 3, can account for some
blocks which are allocated as part of a parallel write.
One of the possible fixes is to make these three operations by holding
a lock. However, this is too costly operation and hence quota relies
on size of the vector being written (with the check that if post and
pre block count are same, entire write was accomodated in existing
blocks). This seems to be acceptable since we don't solely rely on
size_updation by quota-enforcer (we do fetch aggregated size from
quotad after a timeout).
Change-Id: Ifdc8174c77058322aca8f589f7558641b73f0bc1
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/11829
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Vijay Bellur <vbellur@redhat.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: Ic31b77192d7cc21462f6b0eeee2938109681ca55
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
handling GET_ANCESTRY_PATH key.
Change-Id: Ibb1cd1b4d9cd2d6f85b642c2dd157f68d18b8d41
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Also removes QUOTA_UPDATE_USAGE_KEY
Change-Id: I71080eda562f8f4d451c4911f833de9048031da9
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I49798f8b84a260e72bed722e08af6a194005dec1
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I1aa76e6155876e0dcd996bf037ad76cbb17a0ac1
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I807ef0616af3f0f83d3c14e92cc93f5c765908af
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: Iccc4aefebda7d1cd029642adf08806befadd14ad
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I33d45521a06f008554cb43a3d6b53136b2f091d2
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: If9b4a9e9c2c153895129b6ed44ebee416f3da75c
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I8a224a332777d9e2506d6211606f10149ea537e0
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Setting quota limits on a given directory will cause glusterd to
persist the gfid of the path in WD/vols/<volname>/quota.conf.
Also, executing 'quota remove' will cause glusterd to remove
the gfid of the given path.
This is needed for implementing the 'list-all' variant of 'quota list'
command.
To-Do:
1. Exchange quota.conf when a new node is added into the cluster;
2. Unlink quota.conf on disabling quota (?)
Change-Id: I7d75a9cdb43e4e1389ddb08ffe09b294d36f87d8
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A getxattr on key GET_ANCESTRY_DENTRY_KEY to storage/posix would
return a list of direntries which can be used to construct inode
contexts of individual translators. The result of getxattr on this key
can be viewed as similar to readdirp_cbk with the difference that the
dentries returned here represent various paths from that inode till
root rather than the children of a directory.
This patch also modifies marker/quota and enforcer to utilize this
key.
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
Change-Id: I7132e7d56f2fac0f8749f51227d9f2ef27f9d354
BUG: 969461
|
| |
| |
| |
| |
| |
| | |
Change-Id: I960cf42c3cacecb9d1cdb258e063b8691a16ca20
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
a parent cannot be found for an inode.
Quota enforcement requires checking of limits on all ancestors till
root. With anonymous fds and nameless lookups, all the ancestors may
not be populated in inode table. A getxattr on key GET_PATH_KEY would
make storage/posix to construct the dentry chain till root.
Change-Id: I1e2172c28a9c7eb918fe41b63b30209733df148c
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The following is an attempt to generate the paths of a file when only its
gfid is known.
To find the path of a directory, the symlink handle to the directory
maintained in the ".glusterfs" backend directory is read. The symlink handle
is generated using the gfid of the directory. It (handle) contains the
directory's name and parent gfid, which are used to recursively construct
the absolute path as seen by the user from the mount point.
A similar approach cannot be used for a regular file or a symbolic link
since its hardlink handle, generated using its gfid, doesn't contain its
parent gfid and basename. So xattrs are set to store the parent gfids and
the number of hardlinks to a file or a symlink having the same parent gfid.
When an user/application requests for the paths of a regular file or a symlink
with multiple hardlinks, using the parent gfids stored in the xattrs, the paths
of the parent directories are generated as mentioned earlier. The base names of
the hardlinks (with the same parent gfid) are determined by matching the actual
backend inode numbers of each entry in the parent directory with that of the
hardlink handle.
Xattr is set on a regular file, link, and symbolic link as follows,
Xattr name : trusted.pgfid.<pargfidstr>
Xattr value : <number of hardlinks to a regular file/symlink
with the same parentgfid>
If a regular file, hard link, symbolic link is created then an xattr in the above
format is set in the backend. The path of a file can be found by getting the
value of the virtual xattr named "glusterfs.getpath". The multiple hardlinks of
a file or a symlink are displayed as a colon seperated list (this could interfere
with path components containing ':'.)
e.g. In Gluster file system, a filename "file1" in the root directory with
hardlinks "/dir2/link2tofile1" and "/dir1/link1tofile1" are created.
[root@alpha gfsmntpt]# getfattr -n glusterfs.getpath -e text file1
glusterfs.getpath="/file1:/dir2/link2tofile1:/dir1/link1tofile1"
Thanks Amar, Avati and Venky for the inputs.
Change-Id: I2304a50db9b0f73fbea2ca01b61c8a598d464da6
BUG: 990028
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
Original Author: Ramana Raja <rraja@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
distribute xlator does the below operations as internal fops for rename
FOP: rename a -> b
link b
unlink a
distribute sends the above link and unlink fops as internal fops. Quota
xlator upon seeing link and unlink as internal fops does not add/remove
the entries to/from the inode context. So when unlink comes, even though
the fop is internal fop, go through the list of names in the context and
if the name of the entry being unlinked is found in the list, then remove
it from the list.
Change-Id: I9a57e3b9c295f7fce6a9e952a24b59897e856e98
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
|