Commit a5d8f243 authored by marko@hundin.mysql.fi's avatar marko@hundin.mysql.fi

InnoDB: os0file.c:

  Do not lock raw devices or files opened for read only
parent 59e44ff8
......@@ -387,22 +387,19 @@ os_file_lock(
/*=========*/
/* out: 0 on success */
int fd, /* in: file descriptor */
const char* name, /* in: file name */
uint lock_type) /* in: lock_type */
const char* name) /* in: file name */
{
struct flock lk;
lk.l_type = lock_type;
lk.l_type = F_WRLCK;
lk.l_whence = SEEK_SET;
lk.l_start = lk.l_len = 0;
if (fcntl(fd, F_SETLK, &lk) == -1) {
fprintf(stderr,
"InnoDB: Unable to lock %s with lock %d, error: %d",
name, lock_type, errno);
perror (": fcntl");
"InnoDB: Unable to lock %s, error: %d", name, errno);
close(fd);
return(-1);
}
return 0;
return(0);
}
#endif /* USE_FILE_LOCK */
......@@ -869,7 +866,8 @@ try_again:
goto try_again;
}
#ifdef USE_FILE_LOCK
} else if (os_file_lock(file, name, F_WRLCK)) {
} else if (access_type == OS_FILE_READ_WRITE
&& os_file_lock(file, name)) {
*success = FALSE;
file = -1;
#endif
......@@ -980,7 +978,8 @@ os_file_create_simple_no_error_handling(
if (file == -1) {
*success = FALSE;
#ifdef USE_FILE_LOCK
} else if (os_file_lock(file, name, F_WRLCK)) {
} else if (access_type == OS_FILE_READ_WRITE
&& os_file_lock(file, name)) {
*success = FALSE;
file = -1;
#endif
......@@ -1194,7 +1193,8 @@ try_again:
goto try_again;
}
#ifdef USE_FILE_LOCK
} else if (os_file_lock(file, name, F_WRLCK)) {
} else if (create_mode != OS_FILE_OPEN_RAW
&& os_file_lock(file, name)) {
*success = FALSE;
file = -1;
#endif
......@@ -1395,9 +1395,6 @@ os_file_close(
#else
int ret;
#ifdef USE_FILE_LOCK
(void) os_file_lock(file, "unknown", F_UNLCK);
#endif
ret = close(file);
if (ret == -1) {
......@@ -1434,9 +1431,6 @@ os_file_close_no_error_handling(
#else
int ret;
#ifdef USE_FILE_LOCK
(void) os_file_lock(file, "unknown", F_UNLCK);
#endif
ret = close(file);
if (ret == -1) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment