Changing write_all() into write() is safe for files since the
POSIX standard guarantees that write() writes the entire buffer
except if the disk is full, a resource limit is encountered or
if interrupted by a signal. See also
http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html.

Fixes: commit 810082e7a8cf ("libmultipath, multipathd: Rework SIGPIPE handling")
Signed-off-by: Bart Van Assche <bart.vanass...@sandisk.com>
---
 libmultipath/alias.c | 2 +-
 libmultipath/file.c  | 2 +-
 libmultipath/wwids.c | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/libmultipath/alias.c b/libmultipath/alias.c
index b86843a..12afef8 100644
--- a/libmultipath/alias.c
+++ b/libmultipath/alias.c
@@ -219,7 +219,7 @@ allocate_binding(int fd, char *wwid, int id, char *prefix)
                        strerror(errno));
                return NULL;
        }
-       if (write_all(fd, buf, strlen(buf)) != strlen(buf)){
+       if (write(fd, buf, strlen(buf)) != strlen(buf)){
                condlog(0, "Cannot write binding to bindings file : %s",
                        strerror(errno));
                /* clear partial write */
diff --git a/libmultipath/file.c b/libmultipath/file.c
index 74cde64..e4951c9 100644
--- a/libmultipath/file.c
+++ b/libmultipath/file.c
@@ -158,7 +158,7 @@ open_file(char *file, int *can_write, char *header)
                        goto fail;
                /* If file is empty, write the header */
                size_t len = strlen(header);
-               if (write_all(fd, header, len) != len) {
+               if (write(fd, header, len) != len) {
                        condlog(0,
                                "Cannot write header to file %s : %s", file,
                                strerror(errno));
diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c
index babf149..bc70a27 100644
--- a/libmultipath/wwids.c
+++ b/libmultipath/wwids.c
@@ -71,7 +71,7 @@ write_out_wwid(int fd, char *wwid) {
                        strerror(errno));
                return -1;
        }
-       if (write_all(fd, buf, strlen(buf)) != strlen(buf)) {
+       if (write(fd, buf, strlen(buf)) != strlen(buf)) {
                condlog(0, "cannot write wwid to wwids file : %s",
                        strerror(errno));
                if (ftruncate(fd, offset))
@@ -110,7 +110,7 @@ replace_wwids(vector mp)
                goto out_file;
        }
        len = strlen(WWIDS_FILE_HEADER);
-       if (write_all(fd, WWIDS_FILE_HEADER, len) != len) {
+       if (write(fd, WWIDS_FILE_HEADER, len) != len) {
                condlog(0, "Can't write wwid file header : %s",
                        strerror(errno));
                /* cleanup partially written header */
-- 
2.10.0

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to