summaryrefslogtreecommitdiffstats
path: root/xlators/storage/bd/src/bd-helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/storage/bd/src/bd-helper.c')
-rw-r--r--xlators/storage/bd/src/bd-helper.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/xlators/storage/bd/src/bd-helper.c b/xlators/storage/bd/src/bd-helper.c
index ee108b8eda6..ca5a3b741ba 100644
--- a/xlators/storage/bd/src/bd-helper.c
+++ b/xlators/storage/bd/src/bd-helper.c
@@ -897,6 +897,7 @@ bd_do_ioctl_zerofill (bd_priv_t *priv, bd_attr_t *bdatt, int fd, char *vg,
char *p = NULL;
off_t max_bytes = 0;
int sysfd = -1;
+ int ret = 0;
uint64_t param[2] = {0, 0};
off_t nr_loop = 0;
char buff[16] = {0, };
@@ -904,13 +905,16 @@ bd_do_ioctl_zerofill (bd_priv_t *priv, bd_attr_t *bdatt, int fd, char *vg,
uuid_utoa_r (bdatt->iatt.ia_gfid, uuid);
sprintf (lvname, "/dev/%s/%s", vg, uuid);
- if (sys_readlink(lvname, dmname, sizeof(dmname)-1) < 0) {
+ ret = sys_readlink(lvname, dmname, 4096);
+ if (ret < 0) {
gf_log("bd", GF_LOG_DEBUG,
"Failed to read symbolic link '%s': %s",
lvname, strerror(errno));
goto skip;
}
+ dmname[ret] = '\0';
+
p = strrchr (dmname, '/');
if (p)
dm = p + 1;