Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
e1e920bf
Commit
e1e920bf
authored
Feb 22, 2017
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.0 into 10.1
parents
3c47ed48
a0ce92dd
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
158 additions
and
214 deletions
+158
-214
storage/innobase/fil/fil0fil.cc
storage/innobase/fil/fil0fil.cc
+51
-57
storage/innobase/os/os0file.cc
storage/innobase/os/os0file.cc
+28
-51
storage/tokudb/mysql-test/tokudb/r/locks-select-update-3.result
...e/tokudb/mysql-test/tokudb/r/locks-select-update-3.result
+1
-0
storage/tokudb/mysql-test/tokudb/t/locks-select-update-3.test
...age/tokudb/mysql-test/tokudb/t/locks-select-update-3.test
+1
-0
storage/xtradb/fil/fil0fil.cc
storage/xtradb/fil/fil0fil.cc
+50
-56
storage/xtradb/os/os0file.cc
storage/xtradb/os/os0file.cc
+27
-50
No files found.
storage/innobase/fil/fil0fil.cc
View file @
e1e920bf
/*****************************************************************************
Copyright (c) 1995, 2016, Oracle and/or its affiliates.
Copyright (c) 201
3, 2017, MariaDB Corporation
.
Copyright (c) 1995, 2016, Oracle and/or its affiliates.
All Rights Reserved.
Copyright (c) 201
4, 2017, MariaDB Corporation. All Rights Reserved
.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -1029,7 +1029,7 @@ fil_space_extend_must_retry(
mutex_exit
(
&
fil_system
->
mutex
);
ulint
start_page_no
=
space
->
size
;
ulint
file_start_page_no
=
start_page_no
-
node
->
size
;
const
ulint
file_start_page_no
=
start_page_no
-
node
->
size
;
/* Determine correct file block size */
if
(
node
->
file_block_size
==
0
)
{
...
...
@@ -1039,7 +1039,6 @@ fil_space_extend_must_retry(
}
ulint
page_size
=
fsp_flags_get_zip_size
(
space
->
flags
);
ulint
pages_added
=
0
;
if
(
!
page_size
)
{
page_size
=
UNIV_PAGE_SIZE
;
...
...
@@ -1054,51 +1053,56 @@ fil_space_extend_must_retry(
?
OS_FILE_READ
:
OS_FILE_WRITE
;
if
(
srv_use_posix_fallocate
)
{
pages_added
=
size
-
space
->
size
;
const
os_offset_t
start_offset
=
static_cast
<
os_offset_t
>
(
start_page_no
)
*
page_size
;
const
os_offset_t
len
=
static_cast
<
os_offset_t
>
(
pages_added
)
*
page_size
;
const
os_offset_t
start_offset
=
os_offset_t
(
start_page_no
-
file_start_page_no
)
*
page_size
;
const
ulint
n_pages
=
size
-
start_page_no
;
const
os_offset_t
len
=
os_offset_t
(
n_pages
)
*
page_size
;
*
success
=
!
posix_fallocate
(
node
->
handle
,
start_offset
,
len
);
int
err
=
posix_fallocate
(
node
->
handle
,
start_offset
,
len
);
*
success
=
!
err
;
if
(
!*
success
)
{
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"preallocating file "
"space for file
\'
%s
\'
failed. Current size "
INT64PF
", desired size "
INT64PF
,
node
->
name
,
start_offset
,
len
+
start_offset
);
os_file_handle_error_no_exit
(
node
->
name
,
"posix_fallocate"
,
FALSE
,
__FILE__
,
__LINE__
);
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"extending file %s"
" from "
INT64PF
" to "
INT64PF
" bytes"
" failed with error %d"
,
node
->
name
,
start_offset
,
len
+
start_offset
,
err
);
}
DBUG_EXECUTE_IF
(
"ib_os_aio_func_io_failure_28"
,
*
success
=
FALSE
;
errno
=
28
;
*
success
=
FALSE
;
os_has_said_disk_full
=
TRUE
;);
if
(
*
success
)
{
os_has_said_disk_full
=
FALSE
;
}
else
{
pages_added
=
0
;
start_page_no
=
size
;
}
}
else
#else
const
ulint
io_completion_type
=
OS_FILE_WRITE
;
#endif
{
byte
*
buf2
;
byte
*
buf
;
ulint
buf_size
;
#ifdef _WIN32
/* Write 1 page of zeroes at the desired end. */
ulint
buf_size
=
page_size
;
start_page_no
=
size
-
1
;
#else
/* Extend at most 64 pages at a time */
buf_size
=
ut_min
(
64
,
size
-
start_page_no
)
ulint
buf_size
=
ut_min
(
64
,
size
-
start_page_no
)
*
page_size
;
buf2
=
static_cast
<
byte
*>
(
mem_alloc
(
buf_size
+
page_size
));
buf
=
static_cast
<
byte
*>
(
ut_align
(
buf2
,
page_size
));
memset
(
buf
,
0
,
buf_size
);
while
(
start_page_no
<
size
)
{
#endif
byte
*
buf2
=
static_cast
<
byte
*>
(
calloc
(
1
,
buf_size
+
page_size
));
*
success
=
buf2
!=
NULL
;
if
(
!
buf2
)
{
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"Cannot allocate "
ULINTPF
" bytes to extend file"
,
buf_size
+
page_size
);
}
byte
*
const
buf
=
static_cast
<
byte
*>
(
ut_align
(
buf2
,
page_size
));
while
(
*
success
&&
start_page_no
<
size
)
{
ulint
n_pages
=
ut_min
(
buf_size
/
page_size
,
size
-
start_page_no
);
...
...
@@ -1107,49 +1111,39 @@ fil_space_extend_must_retry(
start_page_no
-
file_start_page_no
)
*
page_size
;
const
char
*
name
=
node
->
name
==
NULL
?
space
->
name
:
node
->
name
;
*
success
=
os_aio
(
OS_FILE_WRITE
,
0
,
OS_AIO_SYNC
,
name
,
node
->
handle
,
buf
,
n
ode
->
n
ame
,
node
->
handle
,
buf
,
offset
,
page_size
*
n_pages
,
page_size
,
node
,
NULL
,
0
);
DBUG_EXECUTE_IF
(
"ib_os_aio_func_io_failure_28"
,
*
success
=
FALSE
;
errno
=
28
;
*
success
=
FALSE
;
os_has_said_disk_full
=
TRUE
;);
if
(
*
success
)
{
os_has_said_disk_full
=
FALSE
;
}
else
{
}
/* Let us measure the size of the file
to determine how much we were able to
extend it */
os_offset_t
size
;
size
=
os_file_get_size
(
node
->
handle
);
ut_a
(
size
!=
(
os_offset_t
)
-
1
);
n_pages
=
((
ulint
)
(
size
/
page_size
))
-
node
->
size
-
pages_added
;
pages_added
+=
n_pages
;
break
;
}
os_offset_t
fsize
=
os_file_get_size
(
node
->
handle
);
ut_a
(
fsize
!=
os_offset_t
(
-
1
));
start_page_no
+=
n_pages
;
pages_added
+=
n_pages
;
start_page_no
=
ulint
(
fsize
/
page_size
)
+
file_start_page_no
;
}
mem_
free
(
buf2
);
free
(
buf2
);
}
mutex_enter
(
&
fil_system
->
mutex
);
ut_a
(
node
->
being_extended
);
ut_a
(
start_page_no
-
file_start_page_no
>=
node
->
size
);
space
->
size
+=
pages_added
;
node
->
size
+=
pages_added
;
ulint
file_size
=
start_page_no
-
file_start_page_no
;
space
->
size
+=
file_size
-
node
->
size
;
node
->
size
=
file_size
;
fil_node_complete_io
(
node
,
fil_system
,
io_completion_type
);
...
...
storage/innobase/os/os0file.cc
View file @
e1e920bf
...
...
@@ -2,7 +2,7 @@
Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2009, Percona Inc.
Copyright (c) 201
3
, 2017, MariaDB Corporation. All Rights Reserved.
Copyright (c) 201
2
, 2017, MariaDB Corporation. All Rights Reserved.
Portions of this file contain modifications contributed and copyrighted
by Percona Inc.. Those modifications are
...
...
@@ -2367,48 +2367,47 @@ os_file_set_size(
os_file_t
file
,
/*!< in: handle to a file */
os_offset_t
size
)
/*!< in: file size */
{
os_offset_t
current_size
;
ibool
ret
;
byte
*
buf
;
byte
*
buf2
;
ulint
buf_size
;
current_size
=
0
;
#ifdef HAVE_POSIX_FALLOCATE
if
(
srv_use_posix_fallocate
)
{
if
(
posix_fallocate
(
file
,
current_size
,
size
)
==
-
1
)
{
fprintf
(
stderr
,
"InnoDB: Error: preallocating file "
"space for file
\'
%s
\'
failed. Current size "
"%lu, desired size %lu
\n
"
,
name
,
current_size
,
size
);
os_file_handle_error_no_exit
(
name
,
"posix_fallocate"
,
FALSE
,
__FILE__
,
__LINE__
);
return
(
FALSE
);
int
err
=
posix_fallocate
(
file
,
0
,
size
);
if
(
err
)
{
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"preallocating "
INT64PF
" bytes for"
"file %s failed with error %d"
,
size
,
name
,
err
);
}
return
(
TRUE
);
return
(
!
err
);
}
#endif
#ifdef _WIN32
/* Write 1 page of zeroes at the desired end. */
buf_size
=
UNIV_PAGE_SIZE
;
os_offset_t
current_size
=
size
-
buf_size
;
#else
/* Write up to 1 megabyte at a time. */
buf_size
=
ut_min
(
64
,
(
ulint
)
(
size
/
UNIV_PAGE_SIZE
))
*
UNIV_PAGE_SIZE
;
buf2
=
static_cast
<
byte
*>
(
ut_malloc
(
buf_size
+
UNIV_PAGE_SIZE
));
os_offset_t
current_size
=
0
;
#endif
buf2
=
static_cast
<
byte
*>
(
calloc
(
1
,
buf_size
+
UNIV_PAGE_SIZE
));
if
(
!
buf2
)
{
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"Cannot allocate "
ULINTPF
" bytes to extend file
\n
"
,
buf_size
+
UNIV_PAGE_SIZE
);
return
(
FALSE
);
}
/* Align the buffer for possible raw i/o */
buf
=
static_cast
<
byte
*>
(
ut_align
(
buf2
,
UNIV_PAGE_SIZE
));
/* Write buffer full of zeros */
memset
(
buf
,
0
,
buf_size
);
if
(
size
>=
(
os_offset_t
)
100
<<
20
)
{
fprintf
(
stderr
,
"InnoDB: Progress in MB:"
);
}
while
(
current_size
<
size
)
{
do
{
ulint
n_bytes
;
if
(
size
-
current_size
<
(
os_offset_t
)
buf_size
)
{
...
...
@@ -2420,37 +2419,15 @@ os_file_set_size(
ret
=
os_file_write
(
name
,
file
,
buf
,
current_size
,
n_bytes
);
if
(
!
ret
)
{
ut_free
(
buf2
);
goto
error_handling
;
}
/* Print about progress for each 100 MB written */
if
((
current_size
+
n_bytes
)
/
(
100
<<
20
)
!=
current_size
/
(
100
<<
20
))
{
fprintf
(
stderr
,
" %lu00"
,
(
ulong
)
((
current_size
+
n_bytes
)
/
(
100
<<
20
)));
break
;
}
current_size
+=
n_bytes
;
}
}
while
(
current_size
<
size
);
if
(
size
>=
(
os_offset_t
)
100
<<
20
)
{
fprintf
(
stderr
,
"
\n
"
);
}
free
(
buf2
);
ut_free
(
buf2
);
ret
=
os_file_flush
(
file
);
if
(
ret
)
{
return
(
TRUE
);
}
error_handling:
return
(
FALSE
);
return
(
ret
&&
os_file_flush
(
file
));
}
/***********************************************************************//**
...
...
storage/tokudb/mysql-test/tokudb/r/locks-select-update-3.result
View file @
e1e920bf
...
...
@@ -8,6 +8,7 @@ select * from t where a=1 for update;
a b
1 0
update t set b=b+1 where a=1;
set session tokudb_lock_timeout= 60000;
set session transaction isolation level read committed;
begin;
select * from t where a=1 for update;
...
...
storage/tokudb/mysql-test/tokudb/t/locks-select-update-3.test
View file @
e1e920bf
...
...
@@ -15,6 +15,7 @@ select * from t where a=1 for update;
# t2 update
update
t
set
b
=
b
+
1
where
a
=
1
;
connect
(
conn1
,
localhost
,
root
);
set
session
tokudb_lock_timeout
=
60000
;
set
session
transaction
isolation
level
read
committed
;
begin
;
# t2 select for update, should hang until t1 commits
...
...
storage/xtradb/fil/fil0fil.cc
View file @
e1e920bf
/*****************************************************************************
Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 201
3, 2017, MariaDB Corporation
.
Copyright (c) 201
4, 2017, MariaDB Corporation. All Rights Reserved
.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -1034,7 +1034,7 @@ fil_space_extend_must_retry(
mutex_exit
(
&
fil_system
->
mutex
);
ulint
start_page_no
=
space
->
size
;
ulint
file_start_page_no
=
start_page_no
-
node
->
size
;
const
ulint
file_start_page_no
=
start_page_no
-
node
->
size
;
/* Determine correct file block size */
if
(
node
->
file_block_size
==
0
)
{
...
...
@@ -1044,7 +1044,6 @@ fil_space_extend_must_retry(
}
ulint
page_size
=
fsp_flags_get_zip_size
(
space
->
flags
);
ulint
pages_added
=
0
;
if
(
!
page_size
)
{
page_size
=
UNIV_PAGE_SIZE
;
...
...
@@ -1059,51 +1058,56 @@ fil_space_extend_must_retry(
?
OS_FILE_READ
:
OS_FILE_WRITE
;
if
(
srv_use_posix_fallocate
)
{
pages_added
=
size
-
space
->
size
;
const
os_offset_t
start_offset
=
static_cast
<
os_offset_t
>
(
start_page_no
)
*
page_size
;
const
os_offset_t
len
=
static_cast
<
os_offset_t
>
(
pages_added
)
*
page_size
;
const
os_offset_t
start_offset
=
os_offset_t
(
start_page_no
-
file_start_page_no
)
*
page_size
;
const
ulint
n_pages
=
size
-
start_page_no
;
const
os_offset_t
len
=
os_offset_t
(
n_pages
)
*
page_size
;
*
success
=
!
posix_fallocate
(
node
->
handle
,
start_offset
,
len
);
int
err
=
posix_fallocate
(
node
->
handle
,
start_offset
,
len
);
*
success
=
!
err
;
if
(
!*
success
)
{
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"preallocating file "
"space for file
\'
%s
\'
failed. Current size "
INT64PF
", desired size "
INT64PF
,
node
->
name
,
start_offset
,
len
+
start_offset
);
os_file_handle_error_no_exit
(
node
->
name
,
"posix_fallocate"
,
FALSE
,
__FILE__
,
__LINE__
);
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"extending file %s"
" from "
INT64PF
" to "
INT64PF
" bytes"
" failed with error %d"
,
node
->
name
,
start_offset
,
len
+
start_offset
,
err
);
}
DBUG_EXECUTE_IF
(
"ib_os_aio_func_io_failure_28"
,
*
success
=
FALSE
;
errno
=
28
;
*
success
=
FALSE
;
os_has_said_disk_full
=
TRUE
;);
if
(
*
success
)
{
os_has_said_disk_full
=
FALSE
;
}
else
{
pages_added
=
0
;
start_page_no
=
size
;
}
}
else
#else
const
ulint
io_completion_type
=
OS_FILE_WRITE
;
#endif
{
byte
*
buf2
;
byte
*
buf
;
ulint
buf_size
;
#ifdef _WIN32
/* Write 1 page of zeroes at the desired end. */
ulint
buf_size
=
page_size
;
start_page_no
=
size
-
1
;
#else
/* Extend at most 64 pages at a time */
buf_size
=
ut_min
(
64
,
size
-
start_page_no
)
ulint
buf_size
=
ut_min
(
64
,
size
-
start_page_no
)
*
page_size
;
buf2
=
static_cast
<
byte
*>
(
mem_alloc
(
buf_size
+
page_size
));
buf
=
static_cast
<
byte
*>
(
ut_align
(
buf2
,
page_size
));
memset
(
buf
,
0
,
buf_size
);
while
(
start_page_no
<
size
)
{
#endif
byte
*
buf2
=
static_cast
<
byte
*>
(
calloc
(
1
,
buf_size
+
page_size
));
*
success
=
buf2
!=
NULL
;
if
(
!
buf2
)
{
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"Cannot allocate "
ULINTPF
" bytes to extend file"
,
buf_size
+
page_size
);
}
byte
*
const
buf
=
static_cast
<
byte
*>
(
ut_align
(
buf2
,
page_size
));
while
(
*
success
&&
start_page_no
<
size
)
{
ulint
n_pages
=
ut_min
(
buf_size
/
page_size
,
size
-
start_page_no
);
...
...
@@ -1112,50 +1116,40 @@ fil_space_extend_must_retry(
start_page_no
-
file_start_page_no
)
*
page_size
;
const
char
*
name
=
node
->
name
==
NULL
?
space
->
name
:
node
->
name
;
*
success
=
os_aio
(
OS_FILE_WRITE
,
0
,
OS_AIO_SYNC
,
name
,
node
->
handle
,
buf
,
n
ode
->
n
ame
,
node
->
handle
,
buf
,
offset
,
page_size
*
n_pages
,
page_size
,
node
,
NULL
,
space
->
id
,
NULL
,
0
);
DBUG_EXECUTE_IF
(
"ib_os_aio_func_io_failure_28"
,
*
success
=
FALSE
;
errno
=
28
;
*
success
=
FALSE
;
os_has_said_disk_full
=
TRUE
;);
if
(
*
success
)
{
os_has_said_disk_full
=
FALSE
;
}
else
{
}
/* Let us measure the size of the file
to determine how much we were able to
extend it */
os_offset_t
size
;
size
=
os_file_get_size
(
node
->
handle
);
ut_a
(
size
!=
(
os_offset_t
)
-
1
);
n_pages
=
((
ulint
)
(
size
/
page_size
))
-
node
->
size
-
pages_added
;
pages_added
+=
n_pages
;
break
;
}
os_offset_t
fsize
=
os_file_get_size
(
node
->
handle
);
ut_a
(
fsize
!=
os_offset_t
(
-
1
));
start_page_no
+=
n_pages
;
pages_added
+=
n_pages
;
start_page_no
=
ulint
(
fsize
/
page_size
)
+
file_start_page_no
;
}
mem_
free
(
buf2
);
free
(
buf2
);
}
mutex_enter
(
&
fil_system
->
mutex
);
ut_a
(
node
->
being_extended
);
ut_a
(
start_page_no
-
file_start_page_no
>=
node
->
size
);
space
->
size
+=
pages_added
;
node
->
size
+=
pages_added
;
ulint
file_size
=
start_page_no
-
file_start_page_no
;
space
->
size
+=
file_size
-
node
->
size
;
node
->
size
=
file_size
;
fil_node_complete_io
(
node
,
fil_system
,
io_completion_type
);
...
...
storage/xtradb/os/os0file.cc
View file @
e1e920bf
...
...
@@ -2553,48 +2553,47 @@ os_file_set_size(
os_file_t
file
,
/*!< in: handle to a file */
os_offset_t
size
)
/*!< in: file size */
{
os_offset_t
current_size
;
ibool
ret
;
byte
*
buf
;
byte
*
buf2
;
ulint
buf_size
;
current_size
=
0
;
#ifdef HAVE_POSIX_FALLOCATE
if
(
srv_use_posix_fallocate
)
{
if
(
posix_fallocate
(
file
,
current_size
,
size
)
==
-
1
)
{
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"preallocating file "
"space for file
\'
%s
\'
failed. Current size "
INT64PF
", desired size "
INT64PF
,
name
,
current_size
,
size
);
os_file_handle_error_no_exit
(
name
,
"posix_fallocate"
,
FALSE
,
__FILE__
,
__LINE__
);
return
(
FALSE
);
int
err
=
posix_fallocate
(
file
,
0
,
size
);
if
(
err
)
{
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"preallocating "
INT64PF
" bytes for"
"file %s failed with error %d"
,
size
,
name
,
err
);
}
return
(
TRUE
);
return
(
!
err
);
}
#endif
#ifdef _WIN32
/* Write 1 page of zeroes at the desired end. */
buf_size
=
UNIV_PAGE_SIZE
;
os_offset_t
current_size
=
size
-
buf_size
;
#else
/* Write up to 1 megabyte at a time. */
buf_size
=
ut_min
(
64
,
(
ulint
)
(
size
/
UNIV_PAGE_SIZE
))
*
UNIV_PAGE_SIZE
;
buf2
=
static_cast
<
byte
*>
(
ut_malloc
(
buf_size
+
UNIV_PAGE_SIZE
));
os_offset_t
current_size
=
0
;
#endif
buf2
=
static_cast
<
byte
*>
(
calloc
(
1
,
buf_size
+
UNIV_PAGE_SIZE
));
if
(
!
buf2
)
{
ib_logf
(
IB_LOG_LEVEL_ERROR
,
"Cannot allocate "
ULINTPF
" bytes to extend file
\n
"
,
buf_size
+
UNIV_PAGE_SIZE
);
return
(
FALSE
);
}
/* Align the buffer for possible raw i/o */
buf
=
static_cast
<
byte
*>
(
ut_align
(
buf2
,
UNIV_PAGE_SIZE
));
/* Write buffer full of zeros */
memset
(
buf
,
0
,
buf_size
);
if
(
size
>=
(
os_offset_t
)
100
<<
20
)
{
fprintf
(
stderr
,
"InnoDB: Progress in MB:"
);
}
while
(
current_size
<
size
)
{
do
{
ulint
n_bytes
;
if
(
size
-
current_size
<
(
os_offset_t
)
buf_size
)
{
...
...
@@ -2606,37 +2605,15 @@ os_file_set_size(
ret
=
os_file_write
(
name
,
file
,
buf
,
current_size
,
n_bytes
);
if
(
!
ret
)
{
ut_free
(
buf2
);
goto
error_handling
;
}
/* Print about progress for each 100 MB written */
if
((
current_size
+
n_bytes
)
/
(
100
<<
20
)
!=
current_size
/
(
100
<<
20
))
{
fprintf
(
stderr
,
" %lu00"
,
(
ulong
)
((
current_size
+
n_bytes
)
/
(
100
<<
20
)));
break
;
}
current_size
+=
n_bytes
;
}
if
(
size
>=
(
os_offset_t
)
100
<<
20
)
{
}
while
(
current_size
<
size
);
fprintf
(
stderr
,
"
\n
"
);
}
ut_free
(
buf2
);
ret
=
os_file_flush
(
file
);
if
(
ret
)
{
return
(
TRUE
);
}
free
(
buf2
);
error_handling:
return
(
FALSE
);
return
(
ret
&&
os_file_flush
(
file
));
}
/***********************************************************************//**
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment