tape-admin: bugfix
- ltfs_reformat(): tape needs to be unmounted before format call - ltfs_umount(): be precise, if tapes mountpoint is in use - parse_params(): improve error handling Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
149
bin/tape-admin
149
bin/tape-admin
@@ -689,6 +689,7 @@ ltfs_reformat () {
|
|||||||
ltfs_format ${volume_name_active} ${volume_serial}
|
ltfs_format ${volume_name_active} ${volume_serial}
|
||||||
else
|
else
|
||||||
ltfs_wipe
|
ltfs_wipe
|
||||||
|
ltfs_umount
|
||||||
ltfs_format ${volume_name_active} ${volume_serial}
|
ltfs_format ${volume_name_active} ${volume_serial}
|
||||||
fi
|
fi
|
||||||
ltfs_mount
|
ltfs_mount
|
||||||
@@ -709,22 +710,24 @@ ltfs_umount () {
|
|||||||
printf "${MAGENTA}unmounting LTFS tape ${GREEN}'%s'${NO_COLOR}.\n" \
|
printf "${MAGENTA}unmounting LTFS tape ${GREEN}'%s'${NO_COLOR}.\n" \
|
||||||
"$ltfs_mountpoint"
|
"$ltfs_mountpoint"
|
||||||
fi
|
fi
|
||||||
ret=$(umount $ltfs_mountpoint 2>/dev/null)
|
umount $ltfs_mountpoint 2>/dev/null
|
||||||
if [ $? -eq 0 ]; then
|
ret=$?
|
||||||
|
case $ret in
|
||||||
|
0)
|
||||||
if [ $verbose -ge 2 ]; then
|
if [ $verbose -ge 2 ]; then
|
||||||
printf "${MAGENTA}LTFS tape ${GREEN}'%s'${MAGENTA} unmounted.${NO_COLOR}\n" \
|
printf "${MAGENTA}LTFS tape ${GREEN}'%s'${MAGENTA} unmounted.${NO_COLOR}\n" \
|
||||||
"$ltfs_mountpoint"
|
"$ltfs_mountpoint"
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
elif [ $? -eq 32 ]; then
|
;;
|
||||||
|
*)
|
||||||
if [ $verbose -ge 2 ]; then
|
if [ $verbose -ge 2 ]; then
|
||||||
printf "${RED}Error: ${MAGENTA}LTFS tape ${GREEN}'%s'${MAGENTA} is in use!${NO_COLOR}\n" \
|
printf "${RED}Error: '%s' ${MAGENTA}LTFS tape ${GREEN}'%s'${MAGENTA} is in use!${NO_COLOR}\n" \
|
||||||
"$ltfs_mountpoint"
|
"$ret" "$ltfs_mountpoint"
|
||||||
fi
|
fi
|
||||||
return 1
|
return 1
|
||||||
else
|
;;
|
||||||
return 1
|
esac
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1975,67 +1978,73 @@ parse_params $@
|
|||||||
case $cmd in
|
case $cmd in
|
||||||
add-retensiondays)
|
add-retensiondays)
|
||||||
add_retensiondays_to_retensiondate "${mediapool_name}" "${volume_name}" "${retension_days}"
|
add_retensiondays_to_retensiondate "${mediapool_name}" "${volume_name}" "${retension_days}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
if [ $verbose -ge 1 ]; then
|
||||||
|
printf "${RED}Error: ${MAGENTA}No RetensionDate for ${GREEN}'%s'${MAGENTA} in media-pool ${GREEN}%s${NO_COLOR}\n" \
|
||||||
|
"${mediapool_name}" "${volume_name}"
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
else
|
||||||
date_string_to_iso "${volume_retensiondate}"
|
date_string_to_iso "${volume_retensiondate}"
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
volume_date=$(date --date="${date_iso}Z")
|
volume_date=$(date --date="${date_iso}Z")
|
||||||
printf "${MAGENTA}New RetensionDate date for ${GREEN}'%s'${MAGENTA} is: ${NO_COLOR}'%s'.\n" \
|
printf "${MAGENTA}New RetensionDate date for ${GREEN}'%s'${MAGENTA} is: ${NO_COLOR}'%s'.\n" \
|
||||||
"${volume_name}" "${volume_date}"
|
"${volume_name}" "${volume_date}"
|
||||||
fi
|
fi
|
||||||
else
|
|
||||||
if [ $verbose -ge 1 ]; then
|
|
||||||
printf "${RED}Error: ${MAGENTA}No RetensionDate for ${GREEN}'%s'${MAGENTA} in media-pool ${GREEN}%s${NO_COLOR}\n" \
|
|
||||||
"${mediapool_name}" "${volume_name}"
|
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
get-mediapolicy)
|
get-mediapolicy)
|
||||||
get_mediapolicy "${mediapool_name}" "${volume_name}"
|
get_mediapolicy "${mediapool_name}" "${volume_name}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}MediaPolicy for ${GREEN}'%s'${MAGENTA} is:${NO_COLOR}'%s'.\n" \
|
printf "${MAGENTA}MediaPolicy for ${GREEN}'%s'${MAGENTA} is:${NO_COLOR}'%s'.\n" \
|
||||||
"${volume_name}" "${volume_mediapolicy}"
|
"${volume_name}" "${volume_mediapolicy}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
get-mediapool-name)
|
get-mediapool-name)
|
||||||
get_mediapool_name "${volume_name}"
|
get_mediapool_name "${volume_name}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}MediaPool name: ${GREEN}'%s'${NO_COLOR}\n" \
|
printf "${MAGENTA}MediaPool name: ${GREEN}'%s'${NO_COLOR}\n" \
|
||||||
"${mediapool_name}"
|
"${mediapool_name}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
get-mediapools)
|
get-mediapools)
|
||||||
get_mediapool_names
|
get_mediapool_names
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}MediaPool names: ${GREEN}'%s'${NO_COLOR}\n" \
|
printf "${MAGENTA}MediaPool names: ${GREEN}'%s'${NO_COLOR}\n" \
|
||||||
"${mediapool_names}"
|
"${mediapool_names}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
get-poolmember)
|
get-poolmember)
|
||||||
valid_member=0
|
valid_member=0
|
||||||
get_poolmember "${mediapool_name}" "${volume_name}"
|
get_poolmember "${mediapool_name}" "${volume_name}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}Volume-Name ${GREEN}'%s'${MAGENTA} is a valid mediapool member.${NO_COLOR}\n" \
|
printf "${MAGENTA}Volume-Name ${GREEN}'%s'${MAGENTA} is a valid mediapool member.${NO_COLOR}\n" \
|
||||||
"${volume_name}"
|
"${volume_name}"
|
||||||
fi
|
fi
|
||||||
valid_member=1
|
valid_member=1
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
get-lastwrite)
|
get-lastwrite)
|
||||||
valid_member=0
|
valid_member=0
|
||||||
get_lastwrite "${mediapool_name}" "${volume_name}"
|
get_lastwrite "${mediapool_name}" "${volume_name}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
date_string_to_iso ${volume_lastwrite}
|
date_string_to_iso ${volume_lastwrite}
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
@@ -2044,43 +2053,42 @@ case $cmd in
|
|||||||
"${volume_name}" "${mediapool_name}" "${volume_date}"
|
"${volume_name}" "${mediapool_name}" "${volume_date}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
get-poolmember-next)
|
get-poolmember-next)
|
||||||
valid_member=0
|
valid_member=0
|
||||||
get_poolmember_next "${mediapool_name}" "${volume_name}"
|
get_poolmember_next "${mediapool_name}" "${volume_name}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}Next Volume-Name from media-pool ${GREEN}'%s'${MAGENTA} is:${NO_COLOR} %s.\n" \
|
printf "${MAGENTA}Next Volume-Name from media-pool ${GREEN}'%s'${MAGENTA} is:${NO_COLOR} %s.\n" \
|
||||||
"${mediapool_name}" "${volume_name_next}"
|
"${mediapool_name}" "${volume_name_next}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
get-retensiondate)
|
get-retensiondate)
|
||||||
get_retensiondate "${mediapool_name}" "${volume_name}"
|
get_retensiondate "${mediapool_name}" "${volume_name}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
date_string_to_iso "${volume_retensiondate}"
|
date_string_to_iso "${volume_retensiondate}"
|
||||||
volume_date=$(date --date="${date_iso}Z")
|
volume_date=$(date --date="${date_iso}Z")
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}RetensionDate for ${GREEN}'%s'${MAGENTA} is:${NO_COLOR} %s.\n" \
|
printf "${MAGENTA}RetensionDate for ${GREEN}'%s'${MAGENTA} is:${NO_COLOR} %s.\n" \
|
||||||
"${volume_name}" "${volume_date}"
|
"${volume_name}" "${volume_date}"
|
||||||
fi
|
fi
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
get-mediapool-retensiondays)
|
get-mediapool-retensiondays)
|
||||||
get_mediapool_retensiondays "${mediapool_name}"
|
get_mediapool_retensiondays "${mediapool_name}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}Default retension days for tapes in mediapool ${GREEN}'%s'${MAGENTA} is:${NO_COLOR} %s.\n" \
|
printf "${MAGENTA}Default retension days for tapes in mediapool ${GREEN}'%s'${MAGENTA} is:${NO_COLOR} %s.\n" \
|
||||||
"${mediapool_name}" "${mediapool_defaultretensiondays}"
|
"${mediapool_name}" "${mediapool_defaultretensiondays}"
|
||||||
fi
|
fi
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
get-slot)
|
get-slot)
|
||||||
@@ -2095,59 +2103,72 @@ case $cmd in
|
|||||||
;;
|
;;
|
||||||
ltfs-format)
|
ltfs-format)
|
||||||
ltfs_format "${volume_name}" "${tape_id}"
|
ltfs_format "${volume_name}" "${tape_id}"
|
||||||
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
ltfs-getattribute)
|
ltfs-getattribute)
|
||||||
ltfs_is_mounted
|
ltfs_is_mounted
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
ltfs_get_attribute "${ltfs_attribute_name}"
|
ltfs_get_attribute "${ltfs_attribute_name}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}LTFS attribute ${GREEN}'%s'${MAGENTA} is: ${GREEN}'%s'${NO_COLOR}\n" \
|
printf "${MAGENTA}LTFS attribute ${GREEN}'%s'${MAGENTA} is: ${GREEN}'%s'${NO_COLOR}\n" \
|
||||||
"${ltfs_attribute_name}" "${ltfs_attribute_value}"
|
"${ltfs_attribute_name}" "${ltfs_attribute_value}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
ltfs-is-mounted)
|
ltfs-is-mounted)
|
||||||
ltfs_is_mounted
|
ltfs_is_mounted
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}LTFS Tape is-mounted: ${GREEN}true${NO_COLOR}\n"
|
printf "${MAGENTA}LTFS Tape is-mounted: ${GREEN}true${NO_COLOR}\n"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
ltfs-mount)
|
ltfs-mount)
|
||||||
ltfs_mount
|
ltfs_mount
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}LTFS Tape mount: ${GREEN}true${NO_COLOR}\n"
|
printf "${MAGENTA}LTFS Tape mount: ${GREEN}true${NO_COLOR}\n"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
ltfs-reformat)
|
ltfs-reformat)
|
||||||
ltfs_reformat "${volume_name}"
|
ltfs_reformat "${volume_name}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}LTFS Tape reformat: ${GREEN}%s${NO_COLOR}\n" \
|
printf "${MAGENTA}LTFS Tape reformat: ${GREEN}%s${NO_COLOR}\n" \
|
||||||
"${volume_name}"
|
"${volume_name}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
ltfs-umount)
|
ltfs-umount)
|
||||||
ltfs_umount
|
ltfs_umount
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}LTFS Tape unmount: ${GREEN}true${NO_COLOR}\n"
|
printf "${MAGENTA}LTFS Tape unmount: ${GREEN}true${NO_COLOR}\n"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
media-change)
|
media-change)
|
||||||
media_change $mediapool_name $volume_name
|
media_change $mediapool_name $volume_name
|
||||||
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
if [ ${#volume_name} -ge 1 ]; then
|
if [ ${#volume_name} -ge 1 ]; then
|
||||||
printf "${MAGENTA}Media changed in pool: ${GREEN}%s${NO_COLOR} (Volume-Name: ${GREEN}%s${NO_COLOR})\n" \
|
printf "${MAGENTA}Media changed in pool: ${GREEN}%s${NO_COLOR} (Volume-Name: ${GREEN}%s${NO_COLOR})\n" \
|
||||||
@@ -2157,11 +2178,18 @@ case $cmd in
|
|||||||
"${mediapool_name}"
|
"${mediapool_name}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
fi
|
||||||
;;
|
;;
|
||||||
mount)
|
mount)
|
||||||
mount_tape $mediapool_name $volume_name
|
mount_tape "${mediapool_name}" "${volume_name}"
|
||||||
return $?
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
if [ $verbose -ge 1 ]; then
|
||||||
|
printf "${MAGENTA}Tape ${GREEN}'%s'${MAGENTA} for ${GREEN}'%s'${MAGENTA} mounted${NO_COLOR}\n" \
|
||||||
|
"${volume_name}" "${mediapool_name}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
mtx-exchange)
|
mtx-exchange)
|
||||||
mtx_exchange "${slot_source}" "${slot_target}"
|
mtx_exchange "${slot_source}" "${slot_target}"
|
||||||
@@ -2191,19 +2219,11 @@ case $cmd in
|
|||||||
mtx_unload "${slot_source}" "${drive}"
|
mtx_unload "${slot_source}" "${drive}"
|
||||||
return $?
|
return $?
|
||||||
;;
|
;;
|
||||||
mount)
|
|
||||||
mount_tape "${mediapool_name}" "${volume_name}"
|
|
||||||
if test $? -eq 0; then
|
|
||||||
if [ $verbose -ge 1 ]; then
|
|
||||||
printf "${MAGENTA}Tape ${GREEN}'%s'${MAGENTA} for ${GREEN}'%s'${MAGENTA} mounted${NO_COLOR}\n" \
|
|
||||||
"${volume_name}" "${mediapool_name}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
return $?
|
|
||||||
;;
|
|
||||||
update-lastwrite)
|
update-lastwrite)
|
||||||
update_lastwrite "${mediapool_name}" "${volume_name}" "${date_string}"
|
update_lastwrite "${mediapool_name}" "${volume_name}" "${date_string}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
date_string_to_iso "${volume_lastwrite}"
|
date_string_to_iso "${volume_lastwrite}"
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
@@ -2213,21 +2233,23 @@ case $cmd in
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
update-mediapool-retensiondays)
|
update-mediapool-retensiondays)
|
||||||
update_mediapool_retensiondays "${mediapool_name}" "${mediapool_defaultretensiondays}"
|
update_mediapool_retensiondays "${mediapool_name}" "${mediapool_defaultretensiondays}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
printf "${MAGENTA}New DefaultRetensionDays attribute for ${GREEN}'%s'${MAGENTA} is: ${NO_COLOR}'%s'.\n" \
|
printf "${MAGENTA}New DefaultRetensionDays attribute for ${GREEN}'%s'${MAGENTA} is: ${NO_COLOR}'%s'.\n" \
|
||||||
"${mediapool_name}" "${mediapool_defaultretensiondays}"
|
"${mediapool_name}" "${mediapool_defaultretensiondays}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
update-retensiondate)
|
update-retensiondate)
|
||||||
update_retensiondate "${mediapool_name}" "${volume_name}" "${date_string}"
|
update_retensiondate "${mediapool_name}" "${volume_name}" "${date_string}"
|
||||||
if test $? -eq 0; then
|
if test $? -gt 0; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
if [ $verbose -ge 1 ]; then
|
if [ $verbose -ge 1 ]; then
|
||||||
date_string_to_iso "${volume_retensiondate}"
|
date_string_to_iso "${volume_retensiondate}"
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
@@ -2237,6 +2259,5 @@ case $cmd in
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return $?
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in New Issue
Block a user