mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge BUG#22082 from 5.0-bugteam to 5.1-bugteam
This commit is contained in:
@ -637,6 +637,7 @@ extern int nt_share_delete(const char *name,myf MyFlags);
|
|||||||
extern void TERMINATE(FILE *file, uint flag);
|
extern void TERMINATE(FILE *file, uint flag);
|
||||||
#endif
|
#endif
|
||||||
extern void init_glob_errs(void);
|
extern void init_glob_errs(void);
|
||||||
|
extern void wait_for_free_space(const char *filename, int errors);
|
||||||
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
|
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
|
||||||
extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
|
extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
|
||||||
extern int my_fclose(FILE *fd,myf MyFlags);
|
extern int my_fclose(FILE *fd,myf MyFlags);
|
||||||
|
@ -39,7 +39,7 @@ const char * NEAR globerrs[GLOBERRS]=
|
|||||||
"Can't change dir to '%s' (Errcode: %d)",
|
"Can't change dir to '%s' (Errcode: %d)",
|
||||||
"Warning: '%s' had %d links",
|
"Warning: '%s' had %d links",
|
||||||
"Warning: %d files and %d streams is left open\n",
|
"Warning: %d files and %d streams is left open\n",
|
||||||
"Disk is full writing '%s' (Errcode: %d). Waiting for someone to free space... Retry in %d secs",
|
"Disk is full writing '%s' (Errcode: %d). Waiting for someone to free space... (Expect up to %d secs delay for server to continue after freeing disk space)",
|
||||||
"Can't create directory '%s' (Errcode: %d)",
|
"Can't create directory '%s' (Errcode: %d)",
|
||||||
"Character set '%s' is not a compiled character set and is not specified in the '%s' file",
|
"Character set '%s' is not a compiled character set and is not specified in the '%s' file",
|
||||||
"Out of resources when opening file '%s' (Errcode: %d)",
|
"Out of resources when opening file '%s' (Errcode: %d)",
|
||||||
@ -92,3 +92,17 @@ void init_glob_errs()
|
|||||||
EE(EE_FILE_NOT_CLOSED) = "File '%s' (fileno: %d) was not closed";
|
EE(EE_FILE_NOT_CLOSED) = "File '%s' (fileno: %d) was not closed";
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void wait_for_free_space(const char *filename, int errors)
|
||||||
|
{
|
||||||
|
if (errors == 0)
|
||||||
|
my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
|
||||||
|
filename,my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
|
||||||
|
if (!(errors % MY_WAIT_GIVE_USER_A_MESSAGE))
|
||||||
|
my_printf_error(EE_DISK_FULL,
|
||||||
|
"Retry in %d secs. Message reprinted in %d secs",
|
||||||
|
MYF(ME_BELL | ME_NOREFRESH),
|
||||||
|
MY_WAIT_FOR_USER_TO_FIX_PANIC,
|
||||||
|
MY_WAIT_GIVE_USER_A_MESSAGE * MY_WAIT_FOR_USER_TO_FIX_PANIC );
|
||||||
|
VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
|
||||||
|
}
|
||||||
|
@ -131,10 +131,8 @@ size_t my_fwrite(FILE *stream, const uchar *Buffer, size_t Count, myf MyFlags)
|
|||||||
if ((errno == ENOSPC || errno == EDQUOT) &&
|
if ((errno == ENOSPC || errno == EDQUOT) &&
|
||||||
(MyFlags & MY_WAIT_IF_FULL))
|
(MyFlags & MY_WAIT_IF_FULL))
|
||||||
{
|
{
|
||||||
if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
|
wait_for_free_space("[stream]", errors);
|
||||||
my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
|
errors++;
|
||||||
"[stream]",my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
|
|
||||||
VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
|
|
||||||
VOID(my_fseek(stream,seekptr,MY_SEEK_SET,MYF(0)));
|
VOID(my_fseek(stream,seekptr,MY_SEEK_SET,MYF(0)));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -161,10 +161,8 @@ size_t my_pwrite(int Filedes, const uchar *Buffer, size_t Count,
|
|||||||
if ((my_errno == ENOSPC || my_errno == EDQUOT) &&
|
if ((my_errno == ENOSPC || my_errno == EDQUOT) &&
|
||||||
(MyFlags & MY_WAIT_IF_FULL))
|
(MyFlags & MY_WAIT_IF_FULL))
|
||||||
{
|
{
|
||||||
if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
|
wait_for_free_space(my_filename(Filedes), errors);
|
||||||
my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
|
errors++;
|
||||||
my_filename(Filedes),my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
|
|
||||||
VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((writenbytes && writenbytes != (size_t) -1) || my_errno == EINTR)
|
if ((writenbytes && writenbytes != (size_t) -1) || my_errno == EINTR)
|
||||||
|
@ -54,10 +54,8 @@ size_t my_write(int Filedes, const uchar *Buffer, size_t Count, myf MyFlags)
|
|||||||
if ((my_errno == ENOSPC || my_errno == EDQUOT) &&
|
if ((my_errno == ENOSPC || my_errno == EDQUOT) &&
|
||||||
(MyFlags & MY_WAIT_IF_FULL))
|
(MyFlags & MY_WAIT_IF_FULL))
|
||||||
{
|
{
|
||||||
if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
|
wait_for_free_space(my_filename(Filedes), errors);
|
||||||
my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
|
errors++;
|
||||||
my_filename(Filedes),my_errno,MY_WAIT_FOR_USER_TO_FIX_PANIC);
|
|
||||||
VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user